Проверьте строку, если это Юникод, какой стандарт UTF и длина его в байтах?

Мне нужно проверить, является ли строка Unicode, а затем, если это UTF-8. После этого получите длину строки в байтах, включая спецификацию , если она когда-либо ее использует. Как это можно сделать в Python?

Также для дидактических целей, как выглядит представление списка байтов строки UTF-8? Мне любопытно, как строка UTF-8 представлена ​​в Python.

Последнее редактирование: pprint делает это довольно хорошо.

3 Solutions collect form web for “Проверьте строку, если это Юникод, какой стандарт UTF и длина его в байтах?”

try: string.decode('utf-8') print "string is UTF-8, length %d bytes" % len(string) except UnicodeError: print "string is not UTF-8" 

В Python 2 str представляет собой последовательность байтов, а unicode – последовательность символов. Вы используете str.decode для декодирования последовательности байтов в unicode и unicode.encode для кодирования последовательности символов на str . Так, например, u"é" – это строка unicode, содержащая единственный символ U + 00E9 и также может быть написана u"\xe9" ; кодирование в UTF-8 дает последовательность байтов "\xc3\xa9" .

В Python 3 это изменяется; bytes – это последовательность байтов, а str – последовательность символов.

Чтобы проверить, работает ли Unicode

 >>>a = u'F' >>>isinstance(a, unicode) True 

Чтобы проверить, является ли это UTF-8 или ASCII

 >>>import chardet >>>encoding = chardet.detect('AA') >>>encoding['encoding'] 'ascii' 

Я определенно рекомендую Joel Spolsky's The Absolute Minimum Каждый разработчик программного обеспечения, абсолютно уверен, должен знать о Unicode и наборах символов (никаких оправданий!) , Если вы еще этого не читали.

Для Python Unicode и механизмов кодирования / декодирования, начните здесь . Чтобы получить длину байта строки Unicode, закодированной в utf-8, вы можете сделать:

 print len(my_unicode_string.encode('utf-8')) 

Ваш вопрос помечен как python-2.5, но имейте в виду, что это немного изменилось в Python 3+.

  • Python 2.7, Appengine Data Store и Unicode
  • Преобразование unicode с помощью строки utf-8 в качестве содержимого для str
  • База данных django test не создается с помощью utf8
  • Почему этот HTML-шаблон на jinja2 / python создает ошибку 'u ()' tuple при замене строк?
  • Как правильно вставить символы utf-8 в таблицу MySQL с помощью python
  • Как я могу фильтровать символы Emoji из моего ввода, поэтому я могу сохранить в MySQL <5.5?
  • Кодировка символов Python Европейские акценты
  • python: открыть и прочитать файл, содержащий germanic umlaut, как unicode
  • Python - лучший язык программирования в мире.