获取Unicode字符中字符串的“实际”长度

11 投票
2 回答
4017 浏览
提问于 2025-04-18 04:43

给定一个字符,比如 "" (\xe2\x9c\xae),也可以是其他字符,比如 "Σ"、"д" 或 "Λ",我想知道这个字符在屏幕上显示时的“实际”长度。

举个例子:

len("✮")
len("\xe2\x9c\xae")

这两种方法都返回3,但实际上应该是1。

2 个回答

-1

我在一个类似问题上的回答

你想要知道当前输出环境的渲染宽度。对于图形用户界面(UI),通常会有一种方法可以直接查询这个信息;而在文本环境中,你能做的就是猜测一个符合标准的渲染引擎可能会怎么做,并希望实际的引擎能符合你的预期。

3

你可以试试这样做:

unicodedata.normalize('NFC', u'✮')
len(u"✮")

UTF-8是一种编码方式,用来表示各种字符。对于一些特殊字符,它会使用多个字节来表示。你可以查看一下 unicodedata.normalize() 这个函数。

撰写回答