Для начала стоит уточнить пару терминов.
Кодовая страница — это таблица заданного размера, каждая позиция (или код) которой связана с одним символом или его отсутствием.
Например, кодовая страница размером 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 #кодировки текста
-
Обзор Lenovo Ideapad G550A 59-053097
19 Oct, 24 -
Измерители Wxwidgets
19 Oct, 24 -
Ростелеком И Личная Охрана. Данные
19 Oct, 24 -
Волшебный Английский
19 Oct, 24 -
Обзор Highscreen Winjoy
19 Oct, 24 -
В Китае Пропало 10 Тысяч Доменов
19 Oct, 24 -
Музыка Является Неотъемлемой Частью Меня
19 Oct, 24