Кодировки UNICODE и UTF-8

Кодировка UNICODE

UNICODE это международный стандарт двухбайтовой кодировки. Слово двухбайтовый значит, что на каждый символ текста отводится по 2 байта, т. е. по 16 битов, и это позволяет кодировать в общей сложности 65 536 различных символов. Так много даже и не требуется, даже если кодировать все мыслимые китайские иероглифы.



Кодировка UTF-8

Кодировка UTF-8 предназначена для работы с файлами в кодировке Unicode на компьютерах с байтовой организацией памяти. В ней каждый символ кодируется несколькими байтами, в зависимости от того, в какую категорию от попадает.
Байты можно образно разделить на три категории:
  • Дрезина
    Один байт, несущий всю информацию о кодируемом символе. Отличие — старший бит равен нулю. Кодирует символы основной таблицы ASCII.       Что такое дрезина?
  • Вагон
    Дополнительный байт. Отличие — в двух старших битах записано 10. Расширяет информационное поле паровоза на 6 битов.
  • Паровоз
    Первый байт в группе из  k  байтов. Отличие — в старших  k+1  битах записаны 1, а затем 0. На информационное поле выделяется  6−k  битов. Наши «паравозы», в отличие от настоящих, везут полезный груз. Вроде моторного вагона в электричке.
  • Основным символам — латинице, цифрам и другим важнейшим символам — достаточно дрезины, одного байта. На две тысячи символов, следующих по важности, (на самом деле немного меньше, так как в кодировке есть лакуны) выделяется по два байта. В их паровозе 5 информационных битов, и в вагоне еще шесть, всего 11.

    В частности, кириллица имеет коды от 0400 до 04FF, с почти всеми старославянскими буквами: НИ ӨИГА СѢБЕ.

    Китайские иероглифы требуют больше места. Например, иероглиф    (большой, произносится: да) имеет шестнадцатиричный номер 5927 или в двоичном виде
    0101 1001 0010 0111.

    В нем занято 15 битов. Такой номер размещается в паровозе и двух вагонах
    11100101 10100100 10100111.
    Эти три байта в 16-ричной системе запишутся как E5 C4 C7, а в десятичной как 245, 196, 199. Я прямо писал номер символа.

    Математический знак предшествования    для файлов html (интернета) тоже можно набирать его десятичным номером как ≺ или в шестнадцатиричном коде как ≺,  а в кодировке UTF-8 он при этом запишется тремя байтами:
    E2 89 BA.

    Nd