История
Стандартным размером ячейки памяти элетронно-вычислительной машины (ЭВМ) были 8 бит (8 бит = 1 байт)
Используя 8 бит, можно закодировать28 = 256 символов
ASCII
Первая система кодирования ASCIIAmerican Standard Code for Information Interchangeсодержала 128 кодов символов (0..127): буквы латинского алфавита обоих регистров, цифры, математические операторы, знаки препинания и некоторые служебные символы (возврат каретки, знак табуляции и т.п.)
Система ASCII используется и сегодня
ASCII
В Западной Европе за стандарт также была принята система кодировки символов ASCII
Во многих европейских языках есть символы, отсутствовавшие в системе кодировки символов ASCII
Для расширения таблицы кодов были использованы свободные коды таблицы ASCII с 128 по 255
Коды с 128 по 255 были использованы для добавления символов национальных алфавитов, символов псевдографики, некоторых спецсимволов
Результат – система 8-битной кодировки Latin1(не включает символов кириллицы)
Решение проблемы
Было два возможных решения:
Расширить кодовое пространство, перейдя с 1-байтовой на 2-байтовую кодировку (размер текстовых файлов увеличился бы вдвое)
Создать новую кодировку, базируясь на Latin1
На основе Latin1 была создана кодировка, включающая символы кириллицы
Наименее необходимые для русскоязычного пользователя символы Latin1 были заменены символами кириллицы
Латинские буквы и символы псевдографики остались на своих местах
Кодовая таблица 866 – MS DOS
Символы кириллицы получили коды:
128 – 159, 240ПРОПИСНЫЕ буквы
160 – 175, 224 – 239, 241строчные буквы
Кодовая таблица КОИ-8
КОИ-8 – код обмена информацией, 8 битов
В кодовой таблице КОИ-8 символы русского алфавита помещены в расширенной таблице ASCII таким образом, что позиции кириллических символов соответствуют их фонетическим аналогам в английском алфавите
Если в тексте, написанном в КОИ-8, убирать восьмой бит каждого символа, то получается «читабельный» текст, хотя он и написан латинскими символами
Например, слова «Русский Текст» превратились бы в «rUSSKIJ tEKST»
Следствие – символы кириллицы оказались расположены не в алфавитном порядке
Кодовая таблица Windows-1251
Windows-1251(синоним CP1251 – Code Page)набор символов и кодировка, являющаяся стандартной 8-битной кодировкой для всех русских версий Microsoft Windows
Windows-1251 выгодно отличается от других 8‑битных кириллических кодировок наличием практически всех символов, использующихся в русской типографике для обычного текста (отсутствует только значок ударения)
Также содержит все символы для близких к русскому языку языков: украинского, белорусского, сербского и болгарского
Кодовая таблица Windows-1251
Недостатки
Строчная буква «я» имеет код 0xFF (255 в десятичной системе), что является причиной ряда неожиданных проблем в программах без поддержки чистого 8-го бита
Отсутствуют символы псевдографики, имеющиеся в CP866 и KOI8 (хотя в версиях ОС Windows, для которых она предназначена, в них не было нужды, это делало несовместимость использовавшихся кодировок заметнее)
Кодовая таблица ISO 8859-5
8-битная кодовая страница из семейства кодовых страниц стандарта ISO-8859 для представления кириллицы
Кодовая таблица разработана с участием ISO
ISO – International Organization for StandardizationМеждународная организация по стандартизации, занимающаяся выпуском стандартов
Кодовая таблица ISO 8859-5
ISO 8859-5 была создана на базе «основной кодировки» (все русские буквы сохранили своё расположение, за исключением заглавной Ё)
ISO 8859-5 широко применяется в Сербии и Болгарии на unix-подобных системах
В России эта кодировка почти не употребляется, взамен на unix-подобных системах широкое применение нашла кодировка КОИ-8
Кодовая таблица ISO 8859-5
Русские буквы в кодировке ISO 8859-5 расположены в алфавитном порядке
Коды с 176 по 207 - заглавные буквы, коды с 208 по 239 - строчные буквы
Остальные cимволы кириллицы, включая русскую букву "Ё", располагаются на местах 161 - 175 (заглавные буквы) и 241 - 255 (строчные буквы)
Единая кодовая таблица
Множество кодировок порождало значительное число проблем совместимости ПО (например, браузеры)
Заинтересованность в рынке сбыта в странах Дальнего Востока, использующих иероглифическое письмо (тысячи иероглифов)
Итог – переход на 16-битовую кодировку
Система кодировки Unicode
Единая система кодировки для всех стран мира, включающая все алфавиты, знаки и служебные символы, использующиеся человечеством
16 бит позволяют хранить 65536 кодов символов
Есть 32-битная система Unicode –4 294 967 296 кодов символов
Кодовые таблицы UTF
UTF – Unicode Transformation Format
UTF-8
UTF-16
UTF-32
Стандарт предложен в 1991 году некоммерческой организацией Unicode Консорциумом
http://www.unicode.org
UTF-8, UTF-16, UTF-31,
Каждый символ, в зависимости от кодировки, представляется
1 ÷ 4 байта
16-битный блок
32-битный блок
BOM
Byte Order Mark(Маркер последовательности байтов)
EF BB BF
BOM в UTF-8 используется для того, чтобы отличить UTF-8 от других кодировок
UTF-8
Символы, занимающие более одного байта, кодируются следующим образом
Строка содержит два байта11010000 и 10011111
D0 9F – код символа «П»
11010000.10011111
Общее число байт
Код символа
Кодовое пространство
Хотя UTF позволяют кодировать до 2 147 483 648 (8000000016) кодовых позиций, было принято решение использовать лишь 1 112 064 (10F80016)
Впрочем, даже и этого более чем достаточно — сегодня используется немногим более 100 000 кодовых позиций
Кодовое пространство
Кодовое пространство разбито на 17 "плоскостей" по 65536 символов
Плоскость 0 (0000—FFFF)Базовая многоязыковая плоскость (Basic Multilingual Plane, BMP)
Плоскость 1 (10000—1FFFF)Дополнительная многоязыковая плоскость (Supplementary Multilingual Plane, SMP)
Плоскость 2 (20000—2FFFF)Дополнительная иероглифическая плоскость (Supplementary Ideographic Plane, SIP)
Плоскость 3 (30000—3FFFF)Третичная иероглифическая плоскость (Tertiary Ideographic Plane, TIP)
Плоскости 4—13 (40000—DFFFF)не используются
Кодовое пространство
Плоскость 14 (E0000—EFFFF)Дополнительная плоскость особого назначения (Supplementary Special-purpose Plane, SSP)
Плоскость 15 (F0000—FFFFF)используется как дополнительная область-A для частного использования (Supplementary Private Use Area-A, SPUA-A)
Плоскость 16 (100000—10FFFF)используется как дополнительная область-B для частного использования (Supplementary Private Use Area-B, SPUA-B)
Для обозначения символов Unicode используется запись вида "U+xxxx" (для кодов 0…FFFF), или "U+xxxxx" (для кодов 10000…FFFFF), или "U+xxxxxx" (для кодов 100000…10FFFF)
Кодовое пространство
Управляющие символы C0 (0000—001F)
Основная латиница (0020—007F)
Управляющие символы C1 (0080—009F)
Дополнительные символы Latin-1 (00A0—00FF)
Расширенная латиница-A (0100—017F)
Расширенная латиница-B (0180—024F)
Расширенный набор символов международного фонетического алфавита (0250—02AF)
Некомбинируемые протяжённые символы-модификаторы (02B0—02FF)
Комбинируемые диакритические знаки (0300—036F)
Греческий и коптский алфавиты (0370—03FF)
Кириллица (0400—04FF)
Дополнительные символы кириллицы (0500—052F)
Армянский алфавит (0530—058F)
Письменности с направлением справа налево:
Иврит (0590—05FF)
Арабское письмо (0600—06FF)
Сирийский алфавит (0700—074F)
Дополнительные символы арабского письма (0750—077F)
Тана (мальдивское письмо) (0780—07BF)
Нко (07C0—07FF)
Самаритянское письмо (0800-083F)
Индийские письменности:
Деванагари (0900—097F)
Бенгальская (0980—09FF)
Гурмукхи (0A00—0A7F)
Гуджарати (0A80—0AFF)
Ория (0B00—0B7F)
Тамильская (0B80—0BFF)
Телугу (0C00—0C7F)
Каннада (0C80—0CFF)
Малаялам (0D00—0D7F)
Сингальская (0D80—0DFF)
Тайская письменность (0E00—0E7F)
Лаосская письменность (0E80—0EFF)
Тибетская письменность (0F00—0FFF)
Мьянманская письменность (1000—109F)
Грузинский алфавит (10A0—10FF)
Хангыль (корейская письменность) (1100—11FF)
Эфиопская слоговая письменность (1200—137F)
Дополнительные символы эфиопской письменности (1380—139F)
Письменность чероки (13A0—13FF)
Канадское слоговое письмо (1400—167F)
Огам (1680—169F)
Руническая письменность (16A0—16FF)
…
Символы в Юникоде
Unicode включает практически все современные письменности, в том числе:
Арабскую
Армянскую
Бенгальскую
Бирманскую
Греческую
Грузинскую
Деванагари
Еврейскую
Кириллицу
Китайскую
Коптскую
Кхмерскую
Латинскую
Тамильскую
Корейскую
Чероки
Эфиопскую
Японскую
...
С академическими целями добавлены многие исторические письменности, в том числе:
Руны
Древнегреческая
египетские иероглифы
Клинопись
письменность майя
этрусский алфавит
В Unicode представлен широкий набор математических и музыкальных символов, а также пиктограмм.
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.