как создаются таблицы кодирования

Кодирование для чайников, ч.1

Не являясь специалистом в обозначенной области я, тем не менее, прочитал много специализированной литературы для знакомства с предметом и прорываясь через тернии к звёздам набил, на начальных этапах, немало шишек. При всём изобилии информации мне не удалось найти простые статьи о кодировании как таковом, вне рамок специальной литературы (так сказать без формул и с картинками).

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

0. Начало

Давайте рассмотрим некоторые более подробно.

1.1 Речь, мимика, жесты

1.2 Чередующиеся сигналы

В примитивном виде кодирование чередующимися сигналами используется человечеством очень давно. В предыдущем разделе мы сказали про дым и огонь. Если между наблюдателем и источником огня ставить и убирать препятствие, то наблюдателю будет казаться, что он видит чередующиеся сигналы «включено/выключено». Меняя частоту таких включений мы можем выработать последовательность кодов, которая будет однозначно трактоваться принимающей стороной.

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

1.3 Контекст

2. Кодирование текста

Текст в компьютере является частью 256 символов, для каждого отводится один байт и в качестве кода могут быть использованы значения от 0 до 255. Так как данные в ПК представлены в двоичной системе счисления, то один байт (в значении ноль) равен записи 00000000, а 255 как 11111111. Чтение такого представления числа происходит справа налево, то есть один будет записано как 00000001.

Итак, символов английского алфавита 26 для верхнего и 26 для нижнего регистра, 10 цифр. Так же есть знаки препинания и другие символы, но для экспериментов мы будем использовать только прописные буквы (верхний регистр) и пробел.

Тестовая фраза «ЕХАЛ ГРЕКА ЧЕРЕЗ РЕКУ ВИДИТ ГРЕКА В РЕЧКЕ РАК СУНУЛ ГРЕКА РУКУ В РЕКУ РАК ЗА РУКУ ГРЕКУ ЦАП».

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

2.1 Блочное кодирование

Информация в ПК уже представлена в виде блоков по 8 бит, но мы, зная контекст, попробуем представить её в виде блоков меньшего размера. Для этого нам нужно собрать информацию о представленных символах и, на будущее, сразу подсчитаем частоту использования каждого символа:

Источник

Урок 12
Представление нечисловой информации в компьютере

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодированиякак создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодированиякак создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

Представление текстовой информации в компьютере

Изучив эту тему, вы узнаете и повторите:

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

Компьютеры не с самого рождения могли обрабатывать символьную информацию. Лишь с конца 60-х годов они стали использоваться для обработки текстов и в настоящее время большинство пользователей ПК занимаются вводом, редактированием и форматированием текстовой информации.

1. Таблица кодирования ASCII.

А теперь «заглянем» в память компьютера и разберемся, как же представлена в нем текстовая информация.

Текстовая информация состоит из символов: букв, цифр, знаков препинания, скобок и других. Мы уже говорили, что множество всех символов, с помощью которых записывается текст, называется алфавитом, а число символов в алфавите — его мощностью.

Для представления текстовой информации в компьютере используется алфавит мощностью 256 символов. Мы знаем, что один символ такого алфавита несет 8 битов информации: 2 в 8 степени равно 256. 8 битов = 1 байт, следовательно:

Один символ в компьютерном тексте занимает 1 байт памяти.

Как мы выяснили, традиционно для кодирования одного символа используется 8 бит. И, когда люди определились с количеством бит, им осталось договориться о том, каким кодом кодировать тот или иной символ, чтобы не получилось путаницы, т.е. необходимо было выработать стандарт – все коды символов сохранить в специальной таблице кодов. В первые годы развития вычислительной техники таких стандартов не существовало, а сейчас наоборот, их стало очень много, но они противоречивы. Первыми решили эти проблемы в США, в институте стандартизации. Этот институт ввел в действие таблицу кодов ASCII (AmericanStandardCodeforInformationInterchange – стандартный код информационного обмена США).

Рассмотрим таблицу кодов ASCII.

Пояснение: раздать учащимся распечатанную таблицу кодов ASCII.

Таблица ASCII разделена на две части. Первая – стандартная – содержит коды от 0 до 127. Вторая – расширенная – содержит символы с кодами от 128 до 255.

Первые 32 кода отданы производителям аппаратных средств и называются они управляющие, т.к. эти коды управляют выводом данных. Им не соответствуют никакие символы.

Коды с 32 по 127 соответствуют символам английского алфавита, знакам препинания, цифрам, арифметическим действиям и некоторым вспомогательным символам.

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

Стандартная часть таблицы кодов ASCII

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

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

Коды цифр берутся из этой таблицы только при вводе и выводе и если они используются в тексте. Если же они участвуют в вычислениях, то переводятся в двоичную систему счисления.

Коды национального (русского) алфавита расширенной частитаблицы ASCII

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

Альтернативные системы кодирования кириллицы.

Тексты, созданные в одной кодировке, не будут правильно отображаться в другой.В настоящее время для поддержки букв русского алфавита (кириллицы) существует несколько кодовых таблиц (кодировок), которые используются различными операционными системами, что является существенным недостатком и в ряде случаев при-водит к проблемам, связанным с операциями декодирования числовых значений символов.

Для разных типов ЭВМ используются различные кодировки:

В настоящее время существует 5 кодовых таблиц для русских букв: Windows (СР(кодовая страница)1251), MS – DOS (СР(кодовая страница)866), KOИ – 8 (Код обмена информацией, 8-битный) (используется в OS UNIX), Mac (Macintosh), ISO (OS UNIX).

Одним из первых стандартов кодирования кириллицы на компьютерах был стан-дарт КОИ-8.

Национальная часть кодовой таблицы стандарта КОИ8-Р

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

В настоящее время применяется и кодовая таблица, размещенная на странице СР866 стандарта кодирования текстовой информации, которая используется в операционной системе MS DOS или сеансе работы MS DOS для кодирования кириллицы.

Национальная часть кодовой таблицы СР866

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

В настоящее время для кодирования кириллицы наибольшее распространение получила кодовая таблица, размещенная на странице СР1251 соответствующего стандарта, которая используется в операционных системах семейства Windows фирмы Microsoft.

Национальная часть кодовой таблицы СР1251

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

Во всех представленных кодовых таблицах, кроме таблицы стандарта Unicode, для кодирования одного символа отводится 8 двоичных разрядов (8 бит).

В мире существует примерно 6800 различных языков. Если прочитать текст, напечатанный в Японии на компьютере в России или США, то понять его будет нельзя. Чтобы буквы любой страны можно было читать на любом компьютере, для их кодировки стали использовать 2 байта (16 бит).

N – мощность алфавита символов в кодовой таблице Unicode.

i – информационный вес символа

Основополагающая таблица использования кодового пространства Unicode

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

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

Рассмотрим примеры.

1) Представьте в форме шестнадцатеричного кода слово «ЭВМ» во всех пяти кодировках. Воспользуемся компьютерным калькулятором для перевода чисел из десятичной в шестнадцатеричную систему счисления.

Последовательности десятичных кодов слова «ЭВМ» в различных кодировках составляем на основе кодировочных таблиц:

СР1251: 221 194 204

Переводим с помощью калькулятора последовательности кодов из десятичной системы в шестнадцатеричную:

2) Определить числовой код символа в кодировке Unicode с помощью тексто-вого редактора MicrosoftWord.

1. В операционной системе Windows запустить текстовый редактор MicrosoftWord.

2. В текстовом редакторе MicrosoftWord ввести команду [Вставка-Символ…]. На экране появится диалоговое окно Символ. Центральную часть диалогового окна занимает фрагмент таблицы символов.

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

3. Для определения числового кола знака кириллицы с помощью раскрывающегося списка Набор: выбрать пункт кириллица.

4. Для определения шестнадцатеричного числового кода символа в кодировке Unicode с помощью раскрывающегося списка из: выбрать тип кодировки Юникод (шестн.).

5. В таблице символов выбрать символ Э. В текстовом поле кодзнака : появится его шестнадцатеричный числовой код (в данном случае 042D).

Решите задачи:

№1. Закодируйте с помощью таблицы ASCII слова: А) Excel; Б) Access; В) Windows; Г) ИНФОРМАЦИЯ.

№2. Буква «i» в таблице кодов имеет код 105. Не пользуясь таблицей, расшифруйте следующую последовательность кодов: 102, 105, 108, 101.

№3. Десятичный код буквы «е» в таблице ASCII равен 101. Не пользуясь таблицей, составьте последовательность кодов, соответствующих слову help.

№4. Десятичный код буквы «i» в таблице ASCII равен 105. Не пользуясь таблицей, составьте последовательность кодов, соответствующих слову link.

№5. Декодируйте следующие тексты, заданные десятичным кодом:

А) 192 235 227 238 240 232 242 236;

Б) 193 235 238 234 45 241 245 229 236 224;

В) 115 111 102 116 119 97 114 101.

№6. Во сколько раз увеличится информационный объем страницы текста при его преобразовании из кодировки Windows 1251 (таблица кодировки содержит 256 символов) в кодировку Unicode (таблица кодировки содержит 65536 символов)?

№7. Каков информационный объем текста, содержащего слово ПРОГРАММИРОВАНИЕ:

А) в 16-битной кодировке;

Б) в 8-битной кодировке.

№8. Текст занимает ¼ Кбайта. Какое количество символов он содержит?

№9. Текст занимает полных 6 страниц. На каждой странице размещается 30 строк по 80 символов. Определить объем оперативной памяти, который займет этот текст.

№10. Свободный объем оперативной памяти компьютера 320 Кбайт. Сколько страниц книги поместится в ней, если на странице:

А) 32 строки по 32 символа;

Б) 64 строки по 64 символа;

В) 16 строк по 32 символа.

№11. Текст занимает 20 секторов на двусторонней дискете объемом 360 Кбайт. Дискета разбита на 40 дорожек по 9 секторов. Сколько символов содержит текст?

Источник

Информатика. 10 класс

Конспект урока

Информатика, 10 класс. Урок № 14.

Тема — Кодирование текстовой информации

Цели и задачи урока:

— познакомиться со способами кодирования и декодирования текстовой информации с помощью кодовых таблиц и компьютера;

— познакомиться со способом определения информационного объема текстового сообщения;

— познакомиться с алгоритмом Хаффмана.

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

Вся информация в компьютере хранится в двоичном коде. Поэтому надо научиться преобразовывать символы в двоичный код.

Формула Хартли определяет количество информации в зависимости от количества возможных вариантов:

N — это количество вариантов,

i — это количество бит, не обходимых для кодирования.

Если же мы преобразуем эту формулу и примем за N — количество символов в используемом алфавите (назовем это мощностью алфавита), то мы поймем, сколько памяти потребуется для кодирования одного символа.

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

i — кол-во бит, потребуемых для кодирования

Итак, если в нашем алфавите будет присутствовать только 32 символа, то каждый из них займет только 5 бит.

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

И тогда каждому символу мы дадим уникальный двоичный код. Такую таблицу мы будем назвать кодировочной.

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

Первая широко используемая кодировочная таблица была создана в США и называлась ASCII, что в переводе означало American standard code for information interchange. Как вы видите, в таблице присутствуют не только латинские буквы, но и цифры, и даже действия. Каждому символу отводится 7 бит, а значит, всего было закодировано 128 символов.

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

Но так как этого количества было недостаточно, стали создаваться другие таблицы, в которых можно было закодировать и другие символы. Например, таблица Windows-1251, которая, по сути, являлась изменением таблицы ASCII, в которую добавили буквы кириллицы. Таких таблиц было создано множество: MS-DOS, КОИ-8, ISO, Mac и другие:

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

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

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

Поэтому была разработана международная таблица кодировки Unicode, включающая в себя как символы английского, русского, немецкого, арабского и других языков. На каждый символ в такой таблице отводится 16 бит, то есть она позволяет кодировать 65536 символов. Однако использование такой таблицы сильно «утяжеляет» текст. Поэтому существуют различные алгоритмы неравномерной кодировки текста, например, алгоритм Хаффмана.

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

Идея алгоритма Хаффмана основана на частоте появления символа в последовательности. Символ, который встречается в последовательности чаще всего, получает новый очень маленький код, а символ, который встречается реже всего, получает, наоборот, очень длинный код.

Пусть нам дано сообщение aaabcbeeffaabfffedbac.

Чтобы узнать наиболее выгодный префиксный код для такого сообщения, надо узнать частоту появления каждого символа в сообщении.

Подсчитайте и внесите в таблицу частоту появления каждого символа в сообщении:

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

У вас должно получиться:

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

Расположите буквы в порядке возрастания их частоты.

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

Теперь возьмем два символа с наименьшей чистотой и представим их листьями в дереве, частота которого будет равна сумме частот этих листьев.

Символы d и c превращаются в ветку дерева:

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

Проделываем эти шаги до тех пор, пока не получится дерево, содержащее все символы.

Итак, сортируем таблицу:

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

Объединяем символ e и символ cd в ветку дерева:

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

Получился префиксный код. Теперь осталось расставить 1 и 0. Пусть каждая правая ветвь обозначает 1, а левая — 0.

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

Составляем код буквы, идя по ветке дерева от буквы к основанию дерева.

Тогда код для каждой буквы будет:

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

Закодируйте ASCII кодом слово MOSCOW.

Составим таблицу и поместим туда слово MOSCOW. Используя таблицу ASCII кодов, закодируем все буквы слова:

Источник

Представление символов, таблицы кодировок

Содержание

Представление символов в вычислительных машинах [ править ]

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

Таблицы кодировок [ править ]

На заре компьютерной эры на каждый символ было отведено по пять бит. Это было связано с малым количеством оперативной памяти на компьютерах тех лет. В эти [math]32[/math] символа входили только управляющие символы и строчные буквы английского алфавита.

С ростом производительности компьютеров стали появляться таблицы кодировок с большим количеством символов. Первой семибитной кодировкой стала ASCII7. В нее уже вошли прописные буквы английского алфавита, арабские цифры, знаки препинания. Затем на ее базе была разработана ASCII8, в которым уже стало возможным хранение [math]256[/math] символов: [math]128[/math] основных и еще столько же расширенных. Первая часть таблицы осталась без изменений, а вторая может иметь различные варианты (каждый имеет свой номер). Эта часть таблицы стала заполняться символами национальных алфавитов.

Но для многих языков (например, арабского, японского, китайского) [math]256[/math] символов недостаточно, поэтому развитие кодировок продолжалось, что привело к появлению UNICODE.

Кодировки стандарта ASCII [ править ]

Определение:
ASCII — таблицы кодировок, в которых содержатся основные символы (английский алфавит, цифры, знаки препинания, символы национальных алфавитов(свои для каждого региона), служебные символы) и длина кода каждого символа [math]n = 8[/math] бит.

Кодировки стандарта ASCII ( [math]8[/math] бит):

Структурные свойства таблицы [ править ]

Кодировки стандарта UNICODE [ править ]

Юникод или Уникод (англ. Unicode) — это промышленный стандарт обеспечивающий цифровое представление символов всех письменностей мира, и специальных символов.

Стандарт предложен в 1991 году некоммерческой организацией «Консорциум Юникода» (англ. Unicode Consortium, Unicode Inc.). Применение этого стандарта позволяет закодировать очень большое число символов из разных письменностей. Стандарт состоит из двух основных разделов: универсальный набор символов (англ. UCS, universal character set) и семейство кодировок (англ. UTF, Unicode transformation format). Универсальный набор символов задаёт однозначное соответствие символов кодам — элементам кодового пространства, представляющим неотрицательные целые числа.Семейство кодировок определяет машинное представление последовательности кодов UCS.

Коды в стандарте Unicode разделены на несколько областей. Область с кодами от U+0000 до U+007F содержит символы набора ASCII с соответствующими кодами. Далее расположены области знаков различных письменностей, знаки пунктуации и технические символы. Под символы кириллицы выделены области знаков с кодами от U+0400 до U+052F, от U+2DE0 до U+2DFF, от U+A640 до U+A69F. Часть кодов зарезервирована для использования в будущем.

Кодовое пространство [ править ]

Хотя формы записи UTF-8 и UTF-32 позволяют кодировать до [math]2^<31>[/math] [math](2\ 147\ 483\ 648)[/math] кодовых позиций, было принято решение использовать лишь [math]1\ 112\ 064[/math] для совместимости с UTF-16. Впрочем, даже и этого на текущий момент более чем достаточно — в версии 6.0 используется чуть менее [math]110\ 000[/math] кодовых позиций ( [math]109\ 242[/math] графических и [math]273[/math] прочих символов).

Кодовое пространство разбито на [math]17[/math] плоскостей (англ. planes) по [math]2^<16>[/math] [math](65\ 536)[/math] символов. Нулевая плоскость называется базовой, в ней расположены символы наиболее употребительных письменностей. Первая плоскость используется, в основном, для исторических письменностей, вторая — для для редко используемых иероглифов китайского письма, третья зарезервирована для архаичных китайских иероглифов. Плоскости [math]15[/math] и [math]16[/math] выделены для частного употребления.

Плоскости Юникода
ПлоскостьНазваниеДиапазон символов
Plane 0Basic multilingual plane (BMP)U+0000…U+​FFFF
Plane 1Supplementary multilingual plane (SMP)U+10000…U+​1FFFF
Plane 2Supplementary ideographic plane (SIP)U+20000…U+​2FFFF
Planes 3-13UnassignedU+30000…U+​DFFFF
Plane 14Supplement­ary special-purpose plane (SSP)U+E0000…U+​EFFFF
Planes 15-16Supplement­ary private use area (S PUA A/B)U+F0000…U+​10FFFF

Модифицирующие символы [ править ]

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

Графические символы в Юникоде делятся на протяжённые и непротяжённые. Непротяжённые символы при отображении не занимают дополнительного места в строке. К примеру, к ним относятся знак ударения. Протяжённые и непротяжённые символы имеют собственные коды, но последние не могут встречаться самостоятельно. Протяжённые символы называются базовыми (англ. base characters), а непротяженные — модифицирующими (англ. combining characters). Например символ «Й» (U+0419) может быть представлен в виде базового символа «И» (U+0418) и модифицирующего символа « ̆» (U+0306).

Способы представления [ править ]

Юникод имеет несколько форм представления (англ. Unicode Transformation Format, UTF): UTF-8, UTF-16 (UTF-16BE, UTF-16LE) и UTF-32 (UTF-32BE, UTF-32LE). Была разработана также форма представления UTF-7 для передачи по семибитным каналам, но из-за несовместимости с ASCII она не получила распространения и не включена в стандарт.

UTF-8 [ править ]

Символы UTF-8 получаются из Unicode cледующим образом:

UnicodeUTF-8Представленные символы
0x00000000 — 0x0000007F0xxxxxxxASCII, в том числе английский алфавит, простейшие знаки препинания и арабские цифры
0x00000080 — 0x000007FF110xxxxx 10xxxxxxкириллица, расширенная латиница, арабский алфавит, армянский алфавит, греческий алфавит, еврейский алфавит и коптский алфавит; сирийское письмо, тана, нко; Международный фонетический алфавит; некоторые знаки препинания
0x00000800 — 0x0000FFFF1110xxxx 10xxxxxx 10xxxxxxвсе другие современные формы письменности, в том числе грузинский алфавит, индийское, китайское, корейское и японское письмо; сложные знаки препинания; математические и другие специальные символы
0x00010000 — 0x001FFFFF11110xxx 10xxxxxx 10xxxxxx 10xxxxxxмузыкальные символы, редкие китайские иероглифы, вымершие формы письменности
111111xxслужебные символы c, d, e, f

Несмотря на то, что UTF-8 позволяет указать один и тот же символ несколькими способами, только наиболее короткий из них правильный. Остальные формы, называемые overlong sequence, отвергаются по соображениям безопасности.

Принцип кодирования [ править ]

Правила записи кода одного символа в UTF-8 [ править ]

1. Если размер символа в кодировке UTF-8 = [math]1[/math] байт

Код имеет вид (0aaa aaaa), где «0» — просто ноль, остальные биты «a» — это код символа в кодировке ASCII;

2. Если размер символа в кодировке в UTF-8 [math]\gt 1[/math] байт (то есть от [math]2[/math] до [math]6[/math] ):

2.1 Первый байт содержит количество байт символа, закодированное в единичной системе счисления; 2.2 «0» — бит терминатор, означающий завершение кода размера 2.3 далее идут значащие байты кода, которые имеют вид (10xx xxxx), где «10» — биты признака продолжения, а «x» — значащие биты.

В общем случае варианты представления одного символа в кодировке UTF-8 выглядят так:

Определение длины кода в UTF-8 [ править ]
Количество байт UTF-8Количество значащих бит
[math]1[/math][math]7[/math]
[math]2[/math][math]11[/math]
[math]3[/math][math]16[/math]
[math]4[/math][math]21[/math]
[math]5[/math][math]26[/math]
[math]6[/math][math]31[/math]

[math]C = 7[/math] при [math]n=1[/math]

[math]C = n\cdot5+1[/math] при [math]n\gt 1[/math]

UTF-16 [ править ]

UTF-16LE и UTF-16BE [ править ]

Один символ кодировки UTF-16 представлен последовательностью двух байт или двух пар байт. Который из двух байт в словах идёт впереди, старший или младший, зависит от порядка байт. Подробнее об этом будет сказано ниже.

UTF-32 [ править ]

UTF-32 — один из способов кодирования символов из Юникод, использующий для кодирования любого символа ровно [math]32[/math] бита. Остальные кодировки, UTF-8 и UTF-16, используют для представления символов переменное число байт. Символ UTF-32 является прямым представлением его кодовой позиции (англ. code point).

Главный недостаток UTF-32 — это неэффективное использование пространства, так как для хранения символа используется четыре байта. Символы, лежащие за пределами нулевой (базовой) плоскости кодового пространства редко используются в большинстве текстов. Поэтому удвоение, в сравнении с UTF-16, занимаемого строками в UTF-32 пространства не оправдано.

Порядок байт [ править ]

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

[math]M = \sum_^A_i\cdot 256^i=A_0\cdot 256^0+A_1\cdot 256^1+A_2\cdot 256^2+\dots+A_n\cdot 256^n.[/math]

Варианты записи [ править ]

Порядок от старшего к младшему [ править ]

В этом же виде (используя представление в десятичной системе счисления) записываются числа индийско-арабскими цифрами в письменностях с порядком знаков слева направо (латиница, кириллица). Для письменностей с обратным порядком (арабская) та же запись числа воспринимается как «от младшего к старшему».

Порядок байт от старшего к младшему применяется во многих форматах файлов — например, PNG, FLV, EBML.

Порядок от младшего к старшему [ править ]

В противоположность порядку big-endian, соглашение little-endian поддерживают меньше кросс-платформенных протоколов и форматов данных; существенные исключения: USB, конфигурация PCI, таблица разделов GUID, рекомендации FidoNet.

Переключаемый порядок [ править ]

Многие процессоры могут работать и в порядке от младшего к старшему, и в обратном, например, ARM, PowerPC (но не PowerPC 970), DEC Alpha, MIPS, PA-RISC и IA-64. Обычно порядок байт выбирается программно во время инициализации операционной системы, но может быть выбран и аппаратно перемычками на материнской плате. В этом случае правильнее говорить о порядке байт операционной системы. Переключаемый порядок байт иногда называют англ. bi-endian.

Смешанный порядок [ править ]

Смешанный порядок байт (англ. middle-endian) иногда используется при работе с числами, длина которых превышает машинное слово. Число представляется последовательностью машинных слов, которые записываются в формате, естественном для данной архитектуры, но сами слова следуют в обратном порядке.

В процессорах VAX и ARM используется смешанное представление для длинных вещественных чисел.

Различия [ править ]

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

Для записи длинных чисел (чисел, длина которых существенно превышает разрядность машины) обычно предпочтительнее порядок слов в числе little-endian (поскольку арифметические операции над длинными числами производятся от младших разрядов к старшим). Порядок байт в слове — обычный для данной архитектуры.

Маркер последовательности байт [ править ]

Для определения формата представления Юникода в начало текстового файла записывается сигнатура — символ U+FEFF (неразрывный пробел с нулевой шириной), также именуемый маркером последовательности байт (англ. byte order mark (BOM)). Это позволяет различать UTF-16LE и UTF-16BE, поскольку символа U+FFFE не существует.

как создаются таблицы кодирования. Смотреть фото как создаются таблицы кодирования. Смотреть картинку как создаются таблицы кодирования. Картинка про как создаются таблицы кодирования. Фото как создаются таблицы кодирования

Представление BOM в кодировках

КодированиеПредставление (Шестнадцатеричное)
UTF-8EF BB BF
UTF-16 (BE)FE FF
UTF-16 (LE)FF FE
UTF-32 (BE)00 00 FE FF
UTF-32 (LE)FF FE 00 00

В кодировке UTF-8, наличие BOM не является существенным, поскольку, нет альтернативной последовательности байт. Когда BOM используется на страницах или редакторах для контента закодированного в UTF-8, иногда он может представить пробелы или короткие последовательности символов, имеющие странный вид (такие как ). Именно поэтому, при наличии выбора, для совместимости, как правило, лучше упустить BOM в UTF-8 контенте.Однако BOM могут еще встречаться в тексте закодированном в UTF-8, как побочный продукт перекодирования или потому, что он был добавлен редактором. В этом случае BOM часто называют подписью UTF-8.

Когда символ закодирован в UTF-16, его [math]2[/math] или [math]4[/math] байта можно упорядочить двумя разными способами (little-endian или big-endian). Изображение справа показывает это. Byte order mark указывает, какой порядок используется, так что приложения могут немедленно расшифровать контент. UTF-16 контент должен всегда начинатся с BOM.

BOM также используется для текста обозначенного как UTF-32. Аналогично UTF-16 существует два варианта четырёхбайтной кодировки — UTF-32BE и UTF-32LE. К сожалению, этот способ не позволяет надёжно различать UTF-16LE и UTF-32LE, поскольку символ U+0000 допускается Юникодом

Проблемы Юникода [ править ]

В Юникоде английское «a» и польское «a» — один и тот же символ. Точно так же одним символом (но отличающимся от «a» латинского) считаются русское «а» и сербское «а». Такой принцип кодирования не универсален; по-видимому, решения «на все случаи жизни» вообще не может существовать.

Примеры [ править ]

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *