Как обрабатывать многобайтовую строку в Python
-
27-10-2019 - |
Вопрос
В PHP существуют многобайтовые строковые функции для обработки многобайтовых строк (например, скрипт CJK).Например, я хочу подсчитать, сколько букв в многобайтовой строке, используя len
функция на python, но она возвращает неточный результат (т.е. количество байтов в этой строке)
japanese = "桜の花びらたち"
print japanese
print len(japanese)#return 21 instead of 7
Есть ли в PHP какой-либо пакет или функция, подобная mb_strlen?
Решение
Использование Строки в Юникоде:
# Encoding: UTF-8
japanese = u"桜の花びらたち"
print japanese
print len(japanese)
Обратите внимание на u
перед строкой.
Чтобы преобразовать байтовую строку в Юникод, используйте decode
: "桜の花びらたち".decode('utf-8')
Другие советы
Попробуйте преобразовать его в unicode
Первый:
print len(japanese.decode("utf-8"))
дает 7.Вы работаете со строкой в кодировке utf-8, которая действительно содержит 21 байт.
Не связан с StackOverflow