только 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;