Что такое строка в Юникоде?

Что такое строка в Юникоде?

В чем разница между регулярной строкой и строкой unicode?

Что такое utf-8?

Я пытаюсь изучить Python прямо сейчас, и я продолжаю слышать это модное слово. Что делает код ниже?

Строки i18n (Unicode)

> ustring = u'A unicode \u018e string \xf1' > ustring u'A unicode \u018e string \xf1' ## (ustring from above contains a unicode string) > s = ustring.encode('utf-8') > s 'A unicode \xc6\x8e string \xc3\xb1' ## bytes of utf-8 encoding > t = unicode(s, 'utf-8') ## Convert bytes back to a unicode string > t == ustring ## It's the same as the original, yay! True 

Файлы Unicode

 import codecs f = codecs.open('foo.txt', 'rU', 'utf-8') for line in f: # here line is a *unicode* string 

  • Как отобразить utf-8 в консоли Windows
  • Почему Python настаивает на использовании ascii?
  • Как преобразовать файл в utf-8 в Python?
  • Строки Python и кодирование и декодирование str ()
  • Должен ли я использовать объявление кодирования в Python3?
  • Лучший способ конвертировать URL-адрес Unicode в ASCII (UTF-8-escaped) в Python?
  • UnicodeDecodeError в отладчике PyCharm
  • Сохранение текстов utf-8 в json.dumps как UTF8, а не как \ u escape-последовательность
  • 2 Solutions collect form web for “Что такое строка в Юникоде?”

    Этот ответ касается Python 2. В Python 3 str является строкой Unicode.

    Тип str Python представляет собой набор 8-битных символов. Английский алфавит может быть представлен с использованием этих 8-битных символов, но символы, такие как ±, ♠, Ω и ℑ, не могут.

    Unicode – это стандарт для работы с широким спектром символов. Каждый символ имеет кодовую точку (число), и эти кодовые точки могут быть закодированы (преобразованы в последовательность байтов), используя различные кодировки.

    UTF-8 является одним из таких кодировок. Низкие кодовые точки кодируются с использованием одного байта, а более высокие кодовые точки кодируются как последовательности байтов.

    Тип unicode Python представляет собой набор кодовых точек. Строка ustring = u'A unicode \u018e string \xf1' создает строку Unicode с 20 символами.

    Когда интерпретатор Python отображает значение ustring , он ustring два символа (Ǝ и ñ), потому что они не входят в стандартный диапазон печати.

    Строка s = unistring.encode('utf-8') кодирует строку Unicode, используя UTF-8. Это преобразует каждую кодовую точку в соответствующий байт или последовательность байтов. Результатом является набор байтов, который возвращается как str . Размер s равен 22 байтам, потому что два из символов имеют высокие кодовые точки и кодируются как последовательность из двух байтов, а не одного байта.

    Когда интерпретатор Python отображает значение s , он пропускает четыре байта, которые не находятся в диапазоне печати ( \xc6 , \x8e , \xc3 и \xb1 ). Две пары байтов не рассматриваются как одиночные символы, как раньше, потому что s имеет тип str , а не unicode .

    Строка t = unicode(s, 'utf-8') выполняет противоположную encode() . Он восстанавливает исходные кодовые точки, просматривая байты s и анализируя байтовые последовательности. Результатом является строка Unicode.

    Вызов codecs.open() определяет utf-8 как кодировку, которая говорит Python интерпретировать содержимое файла (коллекцию байтов) как строку Unicode, которая была закодирована с использованием UTF-8.

    Python поддерживает тип строки и тип юникода. Строка представляет собой последовательность символов, а юникод – последовательность «указателей». Юникод представляет собой представление в последовательности в последовательности, и каждый символ на ней не является символом, а числом (в шестнадцатеричном формате), предназначенным для выбора символа на карте. Таким образом, unicode var не имеет кодировки, поскольку он не содержит символов.

    Python - лучший язык программирования в мире.