Get “actual” length of string in Unicode character

2019-03-18 19:00发布

given a character like "" (\xe2\x9c\xae), for example, can be others like "Σ", "д" or "Λ") I want to find the "actual" length that character takes when printed onscreen

for example

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

both return 3, but it should be 1

2条回答
Bombasti
2楼-- · 2019-03-18 19:45

My answer to a similar question:

You are looking for the rendering width from the current output context. For graphical UIs, there is usually a method to directly query this information; for text environments, all you can do is guess what a conformant rendering engine would probably do, and hope that the actual engine matches your expectations.

查看更多
放荡不羁爱自由
3楼-- · 2019-03-18 19:46

You may try like this:

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

UTF-8 is an unicode encoding which uses more than one byte for special characters. Check unicodedata.normalize()

查看更多
登录 后发表回答