О Кодировках И Unicode

Для начала стоит уточнить пару терминов.

Кодовая страница — это таблица заданного размера, каждая позиция (или код) которой связана с одним символом или его отсутствием.

Например, кодовая страница размером 256, где 71-я позиция соответствует букве «Г».

Кодирование — это правило кодирования символа в числовое представление.

Любая кодировка создается под конкретную кодовую страницу.

Например, символ «Г» в кодировке Абваль примет значение 71. Кстати, простейшие кодировки именно так и делают - представляют символы с их значениями в кодовых таблицах, ASCII относится и к этим.

Раньше для кодирования хватало всего 7 бит на символ.

И что? достаточно для 128 различных символов, он содержал все необходимое для пользователей того времени: английский алфавит, знаки препинания, цифры и некоторые специальные символы.

Основная англоязычная 7-битная кодировка с соответствующей ей кодовой страницей называется ASCII (Американский стандартный код обмена информацией) , они также заложили основы на будущее.

Позже, когда компьютеры распространились в неанглоязычных странах, возникла необходимость в национальных языках; вот где фундамент ASCII и пригодился.

Компьютеры обрабатывают информацию на уровне байтов и кодируют ASCII занимает только первые 7 бит. Использование 8-го расширило пространство до 256 мест без потери совместимости, а вместе с ним и поддержка английского языка, это было важно.

Большинство неанглийских кодовых страниц и кодировок основаны на этом факте: нижние 128 позиций такие же, как и ASCII , а старшие 128 зарезервированы для национальных нужд и кодируются старшим битом.

Однако создание каждого языка (иногда группы схожих языков) со своей страницей и кодировкой приводило к проблемам с поддержкой такой экономики разработчиками операционных систем и программного обеспечения в целом.

Чтобы преодолеть ситуацию, был организован консорциум, который разработал и предложил стандарт Unicode. Предполагалось объединить знаки всех языков мира в одну большую таблицу.

Кроме того, были определены кодировки.

Сначала ребята решили, что 65 535 мест должно хватить всем, поэтому ввели УКС-2 — кодирование с фиксированной длиной кода 16 бит. Но пришли азиаты с многотомными азбуками, и расчеты рухнули.

Площадь кода увеличена вдвое.

УКС-2 уже не смог справиться, появилась 32-битная версия УКС-4 .

Ощутимые преимущества кодировок ПСК были постоянной кратной двум длинам кодов и простейшим алгоритмом кодирования, оба из которых способствовали скорости обработки текста компьютером.

Но вместе с тем имела место и неоправданная, чрезмерно расточительная трата пространства: представьте себе, что в ASCII 00010101, затем в УКС-2 00000000 00010101 и УКС-4 уже 00000000 00000000 00000000 00010101. С этим нужно было что-то делать.

Развитие Unicode пошло в сторону кодировок с переменной длиной результирующих кодов.

Представители были UTF-8 , UTF-16 И UTF-32 , последний находится на УДО, так как на данный момент он тождественен УКС-4 .

Каждый персонаж в UTF-8 принимает от 8 до 32 бит и совместим с ASCII. В UTF-16 16 или 32 бита, UTF-32 - 32 бита (если бы пространство Юникода было удвоено, то оно было бы 32 или 64 бита), при этом ASCII эти двое не друзья.

Количество занимаемых байтов зависит от позиции символа в таблице Юникода.

Очевидно, что наиболее практичным кодированием является UTF-8. Именно благодаря совместимости с ASCII , небольшой прожорой памяти и достаточно простыми правилами кодирования, это самая распространённая и перспективная кодировка Юникода.

Ну и в заключение красивая схема преобразования кода символа в UTF-8 :

О кодировках и Unicode

Теги: #Типография #unicode #кодировки текста

Вместе с данным постом часто просматривают: