Ответ 1
Вы можете попробовать следующее:
unicodedata.normalize('NFC', u'✮')
len(u"✮")
UTF-8 - это кодировка юникода, которая использует более одного байта для специальных символов. Проверьте unicodedata.normalize()
✮
" (\xe2\x9c\xae
) могут быть другие, такие как "Σ
", "д
" или "Λ
" ). Я хочу найти "фактическое" длина, которую принимает символ при печати на экране
например
len("✮")
len("\xe2\x9c\xae")
оба возвращают 3, но это должно быть 1
Вы можете попробовать следующее:
unicodedata.normalize('NFC', u'✮')
len(u"✮")
UTF-8 - это кодировка юникода, которая использует более одного байта для специальных символов. Проверьте unicodedata.normalize()
Мой ответ на аналогичный вопрос:
Вы ищете ширину рендеринга из текущего контекста вывода. Для графических пользовательских интерфейсов обычно существует метод прямого запроса этой информации; для текстовых сред все, что вы можете сделать, это угадать, что, вероятно, сделает механизм совместимости рендеринга, и надеемся, что фактический движок соответствует вашим ожиданиям.