Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 135

ных значений в своих 8 битах. По разным причинам формат ASCII использовал

только 7 бит (128 уникальных значений): 26 символов верхнего регистра, 26 сим-

волов нижнего регистра, 10 цифр, некоторые знаки препинания, символы пробела

и непечатаемые символы.

К сожалению, в мире существует больше букв, чем предоставляет формат ASCII.

Вы могли заказать в кафе хот-дог, но не Gewu..rztraminer (название этого вина

в Германии пишется через u.., а во Франции — без него). Было предпринято множе-

ство попыток добавить больше букв и символов, и время от времени вы будете

встречать их. Вот некоторые из них:

 Latin-1 или ISO 8859-1;

 Windows code page 1252.

Текстовые строки

181

Каждый из этих форматов использует все 8 бит, но даже этого недостаточно,

особенно когда вам нужно воспользоваться неевропейскими языками. Unicode — это

действующий международный стандарт, определяющий символы всех языков мира

плюс математические и другие символы.

«Unicode предоставляет уникальный номер каждому символу независимо от

платформы, программы и языка» (Консорциум Unicode).

Страница Unicode Code Charts (http://www.unicode.org/charts) содержит ссылки

на все определенные на данный момент наборы символов с изображениями. В по-

следней версии (6.2) определяется более 110 000 символов, каждый из которых

имеет уникальное имя и идентификационный номер. Символы разбиты на вось-

мибитные наборы, которые называются плоскостями. Первые 256 плоскостей на-

зываются основными многоязычными уровнями. Обратитесь к странице о плоскостях

в «Википедии» (http://bit.ly/unicode-plane), чтобы получить более подробную инфор-

мацию.

Строки формата Unicode в Python 3

Строки в Python 3 являются строками формата Unicode, а не массивом байтов.

Одним разграничением между обычными байтовыми строками и строками в фор-

мате Unicode Python 3 значительно отличается от Python 2.

Если вы знаете Unicode ID или название символа, то можете использовать его

в строке Python. Вот несколько примеров.

 Символ \u, за которым располагаются четыре шестнадцатеричных числа (чис-

ла шестнадцатеричной системы счисления, содержащие символы от 0 до 9 и от

A до F), определяют символ, находящийся в одной из 256 многоязычных пло-

скостей Unicode. Первые два числа являются номером плоскости (от 00 до FF),

а следующие два — индексом символа внутри плоскости. Плоскость с номе-

ром 00 — это старый добрый формат ASCII, и позиции символов в нем такие

же, как и в ASCII.

 Для символов более высоких плоскостей нужно больше битов. Управляющая

последовательность для них выглядит как \U, за которым следуют восемь шест-

надцатеричных символов, крайний слева из них должен быть равен 0.

 Для всех символов конструкция \N{ имя } позволяет указать символ с помощью

его стандартного имени. Имена перечислены по адресу http://www.unicode.org/

charts/charindex.html.

Модуль unicodedata содержит функции, которые преобразуют символы в обоих

направлениях:

 lookup() принимает не зависящее от регистра имя и возвращает символ Uni-

code;