Module (5%)
Section (80%)

Unicode

Кодовые страницы помогли компьютерной индустрии решить проблемы I18N в течение некоторого времени, но вскоре выяснилось, что они не будут постоянным решением.

Концепция, которая решила проблему в долгосрочной перспективе, был Unicode.

UNICODE

Unicode назначает уникальные (однозначные) символы (буквы, дефисы, иероглифы и т.д.) Более чем миллиону кодовых точек. Первые 128 кодовых точек Unicode идентичны ASCII, а первые 256 кодовых точек Unicode идентичны кодовой странице ISO/IEC 8859-1 (кодовая страница, предназначенная для западноевропейских языков).

UCS-4

Стандарт Unicode ничего не говорит о том, как кодировать и хранить символы в памяти и файлах. Он только называет все доступные символы и назначает их плоскостям (группа символов схожего происхождения, приложения или природы).

UCS-4

Существует более одного стандарта, описывающего методы, используемые для реализации Unicode на реальных компьютерах и компьютерных системах хранения. Наиболее общим из них является UCS-4.

Название происходит от универсального набора символов.

UCS-4 использует 32 бита (четыре байта) для хранения каждого символа, а код - это просто уникальный номер кодовых точек Unicode. Файл, содержащий кодированный в UCS-4 текст, может начинаться с BOM (метки порядка байтов), непечатаемой комбинации битов, объявляющих природу содержимого файла. Некоторые утилиты могут требовать этого.




Как видите, UCS-4 является довольно расточительным стандартом - он увеличивает размер текста в четыре раза по сравнению со стандартным ASCII. К счастью, существуют более разумные формы кодирования текстов в Юникоде.

UTF-8

Одним из наиболее часто используемых является UTF-8.

Название происходит от формата преобразования Unicode.

Концепция очень умная. UTF-8 использует столько битов для каждой кодовой точки, сколько необходимо для их представления.

UTF-8 - humorous graphics

Например:

  • все латинские символы (и все стандартные символы ASCII) занимают восемь битов;
  • нелатинские символы занимают 16 бит;
  • Идеографы CJK (Китай-Япония-Корея) занимают 24 бита.
 

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

Python 3 полностью поддерживает Unicode и UTF-8:

  • вы можете использовать символы в кодировке Unicode/UTF-8 для именования переменных и других объектов;
  • вы можете использовать их во время всего ввода и вывода.
 

Это означает, что Python3 полностью интернационализирован.