Найти тему

Python и Юникод

Как и все современные языки программирования и средства разработки, язык Python использует кодировку символов Unicode (Юникод). С этим могут быть связаны некоторые неприятности (о которых я буду рассказывать, но не сегодня). Однако в итоге это даёт преимущество - вам больше не надо думать, можно ли прочитать ваши исходные коды на другом компьютере или нет. Вы точно знаете, что ваши исходники используют Юникод, и на этом точка.

Однако с тех времён, когда многие редакторы исходного кода не поддерживали Юникод, в Python сохранилась одна полезная для тех лет возможность - обозначить строку, как строку в кодировке Юникод.

Маленькая буква u перед кавычками, в которые заключена строка, указывает на то, что предполагается создание строки Юникод:

st = u'Hello WORLD!'

В новых версиях Python это делать уже не обязательно, потому что все строки по умолчанию используют кодировку Юникод. Но эта возможность до сих пор поддерживается.

Ну а если вам вдруг придётся работать со старыми версиями (а это вполне возможно - всякое в жизни бывает), то буковку u надо будет применять обязательно, если вы хотите, чтобы ваша строка имела соответствующую кодировку. Иначе вы не сможете использовать возможности Юникод, например, вставлять в строку спецсимволы:

st = u'Two stars: \u272D and \u272F'
print st

Если же вы не используете букву u, то ошибки не будет, но строка не выведет символы, а выведет их коды:

Пример в Python 2
Пример в Python 2

Как видите, во 2-й версии Python ещё и заморочки с выводом русских букв. Если строка в Юникод, то вместо русских букв в IDLE будут выводиться краказябры, потому что редактор имеет другую кодировку. Кроме того, если вы не используете print, то вместо строки Юникод будут выводиться коды символов (см. рис выше).

В этом смысле в 3-й версии нет никаких сложностей:

Пример в Python 3
Пример в Python 3

Ну а вообще, чем больше я погружаюсь в Python, тем больше нахожу разных заморочек и подводных камней. И кажущаяся простота языка компенсируется необходимостью знать все эти подводные камни.

Ну да ладно. Дорогу осилит идущий. Подписывайтесь на канал, чтобы ничего не пропустить…