Кодировка юникод таблица русский язык. Кодирование символов. Unicode. Юникод в названиях CSS-классов

23.11.2021

Юникод (по-английски Unicode) - это стандарт кодирования символов. Проще говоря, это таблица соответствия текстовых знаков ( , букв, элементов пунктуации ) двоичным кодам. Компьютер понимает только последовательность нулей и единиц. Чтобы он знал, что именно должен отобразить на экране, необходимо присвоить каждому символу свой уникальный номер. В восьмидесятых, знаки кодировали одним байтом, то есть восемью битами (каждый бит это 0 или 1). Таким образом получалось, что одна таблица (она же кодировка или набор) может вместить только 256 знаков. Этого может не хватить даже для одного языка. Поэтому, появилось много разных кодировок, путаница с которыми часто приводила к тому, что на экране вместо читаемого текста появлялись какие-то странные кракозябры. Требовался единый стандарт, которым и стал Юникод. Самая используемая кодировка - UTF-8 (Unicode Transformation Format) для изображения символа задействует от 1 до 4 байт.

Символы

Символы в таблицах Юникода пронумерованы шестнадцатеричными числами. Например, кириллическая заглавная буква М обозначена U+041C. Это значит, что она стоит на пересечении строки 041 и столбца С. Её можно просто скопировать и потом вставить куда-либо. Чтобы не рыться в многокилометровом списке следует воспользоваться поиском. Зайдя на страницу символа, вы увидите его номер в Юникоде и способ начертания в разных шрифтах. В строку поиска можно вбить и сам знак, даже если вместо него отрисовывается квадратик, хотя бы для того, чтобы узнать, что это было. Ещё, на этом сайте есть специальные (и - случайные) наборы однотипных значков, собранные из разных разделов, для удобства их использования.

Стандарт Юникод - международный. Он включает знаки почти всех письменностей мира. В том числе и тех, которые уже не применяются. Египетские иероглифы, германские руны, письменность майя, клинопись и алфавиты древних государств. Представлены и обозначения мер и весов, нотных грамот, математических понятий.

Сам консорциум Юникода не изобретает новых символов. В таблицы добавляются те значки, которые находят своё применение в обществе. Например, знак рубля активно использовался в течении шести лет прежде чем был добавлен в Юникод. Пиктограммы эмодзи (смайлики) тоже сначала получили широкое применение в Япониии прежде чем были включены в кодировку. А вот товарные знаки, и логотипы компаний не добавляются принципиально. Даже такие распространённые как яблоко Apple или флаг Windows. На сегодняшний день, в версии 8.0 закодировано около 120 тысяч символов.

(коды от 0 до 127), т.е. одним байтом кодируются латинские буквы, цифры и специальные символы. Русские буквы (кириллица) представляются 16-битными (двухбайтными) кодами:

110XXXXX 10XXXXXX,

где X обозначены двоичные разряды для размещения кода символа в соответствии с таблицей UNICODE .

Юникод (англ. Unicode) - стандарт кодирования символов, позволяющий представить знаки почти всех письменных языков. Представляемые в юникоде символы кодируются целыми числами без знака. Эти числа будем называть кодами символов в юникоде или просто UNICODE . Юникод имеет несколько форм представления символов в компьютере: UTF-8, UTF-16 (UTF-16BE, UTF-16LE) и UTF-32 (UTF-32BE, UTF-32LE) . (Англ. Unicode transformation format - UTF).

Рассмотрим, как кодируется в UTF-8 буква Ж . Её UNICODE - 1046 10 или 0416 16 или 10000 010110 2 . UNICODE в двоичном виде разбивается на две части: пять левых бит и шесть правых. Левая часть дополняется до байта признаком 110 двухбайтного кода UTF-8 : 110 10000. К правой части приписываются два бита 10 признака продолжения многобайтного кода: 10 010110. Окончательно код буквы Ж в UTF-8 выглядит так:

110 10000 10 010110 2
или D0 96 16

Таким образом, русская буква кодируется дважды: сначала в 11-битный UNICODE , а затем - в 16-битный UTF-8.

В приведённой ниже таблице, кроме кодов UNICODE и UTF-8 в шестнадцатиричной системе счисления, даны коды UTF-8 в десятичной системе счисления и для сравнения коды кириллицы в кодировке CP-1251 , иначе называемой windovs-1251 .

Таблица кодов кириллицы в UTF-8
Символ UNICODE UTF-8 CP-1251
Шестн. Десят Шестн. Десят
А 0410 1040 D090 208 144 192
Б 0411 1041 D091 208 145 193
В 0412 1042 D092 208 146 194
Г 0413 1043 D093 208 147 195
Д 0414 1044 D094 208 148 196
Е 0415 1045 D095 208 149 197
Ж 0416 1046 D096 208 150 198
З 0417 1047 D097 208 151 199
И 0418 1048 D098 208 152 200
Й 0419 1049 D099 208 153 201
К 041A 1050 D09A 208 154 202
Л 041B 1051 D09B 208 155 203
М 041C 1052 D09C 208 156 204
Н 041D 1053 D09D 208 157 205
О 041E 1054 D09E 208 158 206
П 041F 1055 D09F 208 159 207
Р 0420 1056 D0A0 208 160 208
С 0421 1057 D0A1 208 161 209
Т 0422 1058 D0A2 208 162 210
У 0423 1059 D0A3 208 163 211
Ф 0424 1060 D0A4 208 164 212
Х 0425 1061 D0A5 208 165 213
Ц 0426 1062 D0A6 208 166 214
Ч 0427 1063 D0A7 208 167 215
Ш 0428 1064 D0A8 208 168 216
Щ 0429 1065 D0A9 208 169 217
Ъ 042A 1066 D0AA 208 170 218
Ы 042B 1067 D0AB 208 171 219
Ь 042C 1068 D0AC 208 172 220
Э 042D 1069 D0AD 208 173 221
Ю 042E 1070 D0AE 208 174 222
Я 042F 1071 D0AF 208 175 223
а 0430 1072 D0B0 208 176 224
б 0431 1073 D0B1 208 177 225
в 0432 1074 D0B2 208 178 226
г 0433 1075 D0B3 208 179 227
д 0434 1076 D0B4 208 180 228
е 0435 1077 D0B5 208 181 229
ж 0436 1078 D0B6 208 182 230
з 0437 1079 D0B7 208 183 231
и 0438 1080 D0B8 208 184 232
й 0439 1081 D0B9 208 185 233
к 043A 1082 D0BA 208 186 234
л 043B 1083 D0BB 208 187 235
м 043C 1084 D0BC 208 188 236
н 043D 1085 D0BD 208 189 237
о 043E 1086 D0BE 208 190 238
п 043F 1087 D0BF 208 191 239
р 0440 1088 D180 209 128 240
с 0441 1089 D181 209 129 241
т 0442 1090 D182 209 130 242
у 0443 1091 D183 209 131 243
ф 0444 1092 D184 209 132 244
х 0445 1093 D185 209 133 245
ц 0446 1094 D186 209 134 246
ч 0447 1095 D187 209 135 247
ш 0448 1096 D188 209 136 248
щ 0449 1097 D189 209 137 249
ъ 044A 1098 D18A 209 138 250
ы 044B 1099 D18B 209 139 251
ь 044C 1100 D18C 209 140 252
э 044D 1101 D18D 209 141 253
ю 044E 1102 D18E 209 142 254
я 044F 1103 D18F 209 143 255
Символы вне общего правила
Ё 0401 1025 D001 208 101 168
ё 0451 1025 D191 209 145 184

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

«Юникод»: определение

Под термином «Юникод» сегодня имеют в виду стандарт кодирования символов. Данный стандарт был предложен в 1991 году некоммерческой организацией Unicode Inc. Стандарт «Юникод» разрабатывался для объединения большого числа различных символов в одном документе. Страница, созданная на основе такой кодировки, может содержать в себе иероглифы, буквы, и математические символы. В данной кодировке без проблем отображаются все символы.

«Юникод»: причины создания

Еще задолго до появления системы «Юникод», кодировки выбирались исходя из предпочтений автора документа. Нередко по этой причине, чтобы прочитать один документ, приходилось использовать различные таблицы. Однако делать это приходилось по несколько раз. Это существенно усложняло жизнь обычным пользователям. Как уже было сказано ранее, в 1991 году для решения данной проблемы некоммерческая организация Unicode Inc. предложила использовать новый тип кодирования информации. Данный тип кодирования был создан для объединения самых разнообразных стандартов. Кодировка «Юникод» позволила добиться невозможного: создать инструмент, поддерживающий огромное количество разнообразных символов. Полученный результат превзошел ожидания: получились документы, которые одновременно могли содержать в себе как русский, так и английский текст, а также математические выражения и латынь. Перед созданием единой системы кодировки разработчикам предстояло решить целый ряд проблем, возникающих из-за существования огромного числа стандартов, которые уже существовали на данный момент. К самым распространенным из таких проблем относились ограниченность набора символов, эльфийские письмена, дублирование шрифтов и проблема преобразования различных кодировок.

«Юникод»: экскурс в историю

Представьте себе следующую картину: на дворе 80-е, компьютерная техника еще не получила столь широкого распространения и имеет вид, отличный от сегодняшнего. Каждая операционная система по-своему уникальна и доработана энтузиастами под те или иные конкретные нужды. В результате необходимость в обмене информацией привела к дополнительным доработкам. При попытке прочитать документ, созданный в другой операционной системе, на экране обычно выводились непонятные наборы символов. Это требовало дальнейшей работы с кодировкой, которую не всегда получалось выполнить быстро. Порой на обработку необходимого документа уходило несколько месяцев. Пользователи, которым часто приходится обмениваться информацией, стали создавать для себя особые таблицы преобразования. Работа с такими таблицами выявила одну интересную особенность: создавать такие таблицы необходимо одновременно по двум направлениям. Машина не может выполнить банальную инверсию вычислений. Для нее в правом столбце записан исходный файл, а в левом результат. Наоборот переставить их нельзя. При необходимости использовать в документе какие-то специальные символы, сначала их необходимо было добавить, а потом еще объяснить другому пользователю, что нужно с ними сделать, чтобы они не превратились в «крякозябры». Также стоит учитывать, что под каждую кодировку приходилось разрабатывать собственные шрифты. Это привело к созданию огромного количества дублей в операционной системе. Так, например, на одной странице пользователь мог наблюдать десяток шрифтов, идентичных стандартному Times New Roman, но с пометками UCS-2, UTF-16, UTF-8, ANSI. Таким образом, назрела необходимость разработки универсального стандарта.

«Юникод»: создатели

Начало истории создания «Юникод» можно отнести к 1987 году. Именно тогда Джо Беккер из компании Xerox вместе с Марком Дэвисом и Ли Коллинзом из компании Apple приступили к исследованиям в области практической разработки универсальной кодировки. В 1988 году Джо Беккер опубликовал проект создания международной многоязычной кодировки. Несколько месяцев спустя работая группа по разработке «Юникод» была расширена. В нее вошли такие специалисты, как Гленн Райт из Sun Microsystems, Майк Кернеган и Кен Уистлер из RLG. Это позволило завершить работы по предварительному формированию единого стандарта кодирования.

«Юникод»: общее описание

В основе кодировки Unicode лежит общее понятие символа. Под данным определением понимают абстрактное явление, которое существует в виде письменности, реализуемой через графемы. В «Юникод» каждому символу сопоставляется уникальный код, который принадлежит тому или иному блоку стандарта. Так, к примеру, графема «В» присутствует и в английском, и в русском языках, но ей соответствует два разных символа. К данным символам также может применяться преобразование в строчную букву. Это значит, что каждый из этих символов описывается ключом, набором свойств и названием.

«Юникод»: преимущества

От других современных систем кодировки «Юникод» отличается огромным запасом знаков для «шифрования» различных символов. Все дело в том, что предшествующие кодировки имели всего 8 бит. Это значит, что они поддерживали всего 28 символов. Новая разработка имела 216 символов, что стало большим шагом вперед. Таким образом появилась возможность закодировать практически все существующие алфавиты. Необходимость использования таблиц преобразования с появлением «Юникода» отпала. Наличие единого стандарта просто сводило их полезность к нулю. Вместе с тем исчезли и «крякозябры». Появление нового стандарта сделало их существование невозможным. Также была исключена необходимость создания дублей шрифтов.

«Юникод»: развитие

Несмотря на то, что прогресс не стоит на месте, кодировка «Юникод» продолжает удерживать лидирующие позиции в мире. Это стало возможным во многом благодаря тому, что он стал легко внедряемым и получил широкое распространение. При это не стоит считать, что сегодня используется такая же кодировка «Юникод», что и 25 лет назад. Сегодня используется версия 5.x.x. Число кодируемых символов возросло до 231. С момента возникновения до появления версии 2.0.0 кодировка «Юникод» увеличила число входящих в нее символов практически в два раза. В последующие годы такой рост возможностей продолжился. К моменту появления версии 4.0.0 возникла необходимость увеличения самого стандарта. В результате кодировка «Юникод» обрела вид, в котором мы ее знаем сегодня.

Что же еще полезного есть в «Юникод»? Кроме огромного, постоянно пополняющегося количества символов, кодировка «Юникод» имеет одну довольно полезную особенность. Это нормализация. Кодировка не тратит ресурсы компьютера на регулярную проверку одного и того же символа, который в разных алфавитах может иметь похожее написание. Для этой цели используется специальный алгоритм, который дает возможность вынести схожие символы отдельно графой и обращаться к ним, а не проверять каждый раз всю информацию. Всего разработано и внедрено четыре таких алгоритма. Преобразование в каждом из них осуществляется по определенному принципу, отличающемуся от других.

Для корректной работы данного сайта требуется JavaScript. Пожалуйста, включите поддержку JavaScript в настройках вашего обозревателя.

Таблица символов Юникода

Показать все
Диапазон: 0000-001F: Управляющие символы C0 0020-007F: Основная латиница 0080-009F: Управляющие символы C1 00A0-00FF: Дополнительные символы Latin-1 0100-017F: Расширенная латиница-A 0180-024F: Расширенная латиница-B 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: Самаритянское письмо 0840-085F: Мандейский алфавит 08A0-08FF: Расширенный набор символов арабского письма-А 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: Руническая письменность 1700-171F: Тагальская (байбайин) 1720-173F: Хануноо 1740-175F: Бухид 1760-177F: Тагбанва 1780-17FF: Кхмерская письменность 1800-18AF: Старомонгольская письменность 18B0-18FF: Расширенный набор символов канадского слогового письма 1900-194F: Письменность лимбу 1950-197F: Письменность тай лэ 1980-19DF: Новый алфавит тай лы 19E0-19FF: Кхмерские символы 1A00-1A1F: Бугийская письменность (лонтара) 1A20-1AAF: Старый алфавит тай лы (Тай Тхам) 1B00-1B7F: Балийская письменность 1B80-1BBF: Сунданская письменность 1BC0-1BFF: Батакское письмо 1C00-1C4F: Письменность лепча (ронг) 1C50-1C7F: Письменность Ол Чики 1CD0-1CFF: Ведические символы 1D00-1D7F: Фонетические расширения 1D80-1DBF: Дополнительные фонетические расширения 1DC0-1DFF: Дополнительные комбинируемые диакритические знаки 1E00-1EFF: Дополнительная расширенная латиница 1F00-1FFF: Расширенный набор символов греческого алфавита 2000-206F: Знаки пунктуации 2070-209F: Надстрочные и подстрочные знаки 20A0-20CF: Символы валют 20D0-20FF: Комбинируемые диакритические знаки для символов 2100-214F: Буквоподобные символы 2150-218F: Числовые формы 2190-21FF: Стрелки 2200-22FF: Математические операторы 2300-23FF: Разнообразные технические символы 2400-243F: Значки управляющих кодов 2440-245F: Символы оптического распознавания 2460-24FF: Вложенные буквы и цифры 2500-257F: Символы для рисования рамок 2580-259F: Символы заполнения 25A0-25FF: Геометрические фигуры 2600-26FF: Разнообразные символы 2700-27BF: Дингбаты 27C0-27EF: Разнообразные математические символы-A 27F0-27FF: Дополнительные стрелки-A 2800-28FF: Азбука Брайля 2900-297F: Дополнительные стрелки-B 2980-29FF: Разнообразные математические символы-B 2A00-2AFF: Дополнительные математические операторы 2B00-2BFF: Разнообразные символы и стрелки 2C00-2C5F: Глаголица 1AB0-1AFF: Комбинированные диакритические знаки (расширение A) 1CC0-1CCF: Расширенный набор символов сунданского письма A9E0-A9FF: Мьянманская письменность (расширение B) AAE0-AAFF: Расширенный набор символов письменности мейтей AB30-AB8F: Расширенная латиница-E AB30-AB6F: Варанг-кшити AB90-ABBF: Письменность Бериа для языка загхава 2C60-2C7F: Расширенная латиница-C 2C80-2CFF: Коптский алфавит 2D00-2D2F: Дополнительные символы грузинского алфавита 2D30-2D7F: Тифинаг 2D80-2DDF: Расширенный набор символов эфиопского письма 2DE0-2DFF: Расширенная кириллица-A 2E00-2E7F: Дополнительные знаки пунктуации 2E80-2EFF: Дополнительные иероглифические ключи ККЯ 2F00-2FDF: Иероглифические ключи словаря Канси 2FF0-2FFF: Символы описания иероглифов 3000-303F: Символы и пунктуация ККЯ 3040-309F: Хирагана 30A0-30FF: Катакана 3100-312F: Чжуинь (бопомофо) 3130-318F: Чамо, комбинируемое с хангылем 3190-319F: Знаки, используемые в камбуне 31A0-31BF: Расширенный набор символов бопомофо 31C0-31EF: Черты ККЯ 31F0-31FF: Фонетические расширения катаканы 3200-32FF: Вложенные буквы и месяцы ККЯ 3300-33FF: Знаки совместимости ККЯ 3400-4DBF: Унифицированные иероглифы ККЯ (расширение А) 4DC0-4DFF: Гексаграммы И-Цзин 4E00-9FFF: Унифицированные иероглифы ККЯ A000-A48F: Слоги и A490-A4CF: Радикалы и A4D0-A4FF: Алфавит лису A500-A63F: Слоговая письменность ваи A640-A69F: Расширенная кириллица-B A6A0-A6FF: Письменность бамум A700-A71F: Символы изменения тона A720-A7FF: Расширенная латиница-D A800-A82F: Силоти Нагри A830-A83F: Индийские числовые символы A840-A87F: Квадратное письмо Пагба-ламы A880-A8DF: Саураштра A8E0-A8FF: Расширенный набор символов деванагари A900-A92F: Кайях Ли A930-A95F: Реджанг A960-A97F: Хангыль (расширение A) A980-A9DF: Яванская письменность AA00-AA5F: Тямское письмо AA60-AA7F: Мьянманская письменность (расширение A) AA80-AADF: Письменность Тай Вьет АВ00-АВ2F: Набор символов эфиопского письма (расширение A) ABC0-ABFF: Мейтей/Манипури AC00-D7AF: Слоги хангыля D800-DB7F: Верхняя часть суррогатных пар DB80-DBFF: Верхняя часть суррогатных пар для частного использования DC00-DFFF: Нижняя часть суррогатных пар E000-F8FF: Область для частного использования F900-FAFF: Совместимые иероглифы ККЯ FB00-FB4F: Алфавитные формы представления FB50-FDCF: Формы представления арабских букв-A FDF0-FDFF: Формы представления арабских букв-A FE00-FE0F: Селекторы вариантов начертания FE10-FE1F: Вертикальные формы FE20-FE2F: Комбинируемые половинки символов FE30-FE4F: Формы совместимости ККЯ FE50-FE6F: Варианты малого размера FE70-FEFF: Формы представления арабских букв-B FF00-FFEF: Полуширинные и полноширинные формы FFF0-FFFF: Специальные символы

  • Что такое Юникод?

    Юникод (англ. Unicode ) - это универсальный стандарт кодирования символов, который позволяет предоставить знаки всех языков мира.

    В отличие от ASCII , один символ кодируется двумя байтами, что позволяет использовать 65 536 символов, против 256 .

    Как известно, один байт - это целое число от нуля до 255 . В свою очередь, байт состоит из восьми бит, которые хранят числовые значения в двоичном виде, где каждая следующая единица текущего бита является в два раза большим значением предыдущего бита. Таким образом, два байта могут хранить в себе число от нуля до 65 535 , что и позволяет использовать 65 536 символов (ноль + 65 535 , ноль - это тоже число, он не является ничем).

    Символы Юникода разделены на секции. Первые 128 символов повторяют таблицу ASCII .

    За отображение символов отвечает семейство кодировок Юникода (Unicode Transformation Format - UTF ). Наиболее известная и широко применяемая кодировка - UTF-8 .

  • Как пользоваться таблицей?

    Символы представлены по 16 штук на строке. Сверху вы можете видеть шестнадцатеричное число от 0 до 16 . Слева аналогичные числа в шестнадцатеричном виде от 0 до FFF .
    Соединив число слева с числом сверху, можно узнать код символа. Например: английская буква F расположена на строке 004 , в столбике 6 : 004 + 6 = код символа 0046 .

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

    В поисковое поле можно ввести ключевые слова поиска, например: стрелки, солнце, сердце. Либо можно указать код символа в любом формате, например: 1123, 04BC, چ. Или сам символ, если требуется узнать код символа.

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

Юникод , или Уникод (англ. Unicode™ ) - стандарт кодирования символов, позволяющий представить знаки практически всех письменных языков.

Стандарт предложен в 1991 году некоммерческой организацией «Консорциум Юникода», объединяющей крупнейшие IT-корпорации. Применение этого стандарта позволяет закодировать очень большое число символов из разных письменностей: в документах Unicode могут соседствовать китайские иероглифы, математические символы, буквы греческого алфавита, латиницы и кириллицы, при этом становятся ненужными кодовые страницы.

Стандарт состоит из двух основных разделов: универсальный набор символов (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.

Версии Юникода

По мере изменения и пополнения таблицы символов системы Юникода и выхода новых версий этой системы, - а эта работа ведётся постоянно, поскольку изначально система Юникод включала только Plane 0 - двухбайтные коды, - выходят и новые документы ISO. Система Юникод существует в общей сложности в следующих версиях:

  • 1.1 (соответствует стандарту ISO/IEC 10646-1: 1993),
  • 2.0, 2.1 (тот же стандарт ISO/IEC 10646-1:1993 плюс дополнения: «Amendments» с 1-го по 7-е и «Technical Corrigenda» 1 и 2),
  • 3.0 (стандарт ISO/IEC 10646-1:2000).
  • 3.2 (стандарт 2002 года)
  • 4.0 (стандарт 2003)
  • 4.01 (стандарт 2004)
  • 4.1 (стандарт 2005)
  • 5.0 (стандарт 2006)
  • 5.1 (стандарт 2008)

Кодовое пространство

Хотя формы записи UTF-8 и UTF-32 позволяют кодировать до 2 31 (2 147 483 648) кодовых позиций, было принято решение использовать лишь 2 20 +2 16 (1 114 112) для совместимости с UTF-16. Впрочем, даже и этого более чем достаточно - сегодня (в версии 5.0) используется чуть больше 99 000 кодовых позиций.

Кодовое пространство разбито на 17 плоскостей по 2 16 (65536) символов. Нулевая плоскость называется базовой , в ней расположены символы наиболее употребительных письменностей. Первая плоскость используется, в основном, для исторических письменностей. Плоскости 15 и 16 выделены для частного употребления.

Для обозначения символов Unicode используется запись вида «U+xxxx » (для кодов 0…FFFF) или «U+xxxxx » (для кодов 10000…FFFFF) или «U+xxxxxx » (для кодов 100000…10FFFF), где xxx - шестнадцатеричные цифры. Например, символ «я» (U+044F) имеет код 044F 16 = 1103 10 .

Система кодирования

Универсальная система кодирования (Юникод) представляет собой набор графических символов и способ их кодирования для компьютерной обработки текстовых данных.

Графические символы - это символы, имеющие видимое изображение. Графическим символам противопоставляются управляющие символы и символы форматирования.

Графические символы включают в себя следующие группы:

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

Юникод - это система для линейного представления текста. Символы, имеющие дополнительные над- или подстрочные элементы, могут быть представлены в виде построенной по определённым правилам последовательности кодов (составной вариант, composite character) или в виде единого символа (монолитный вариант, precomposed character).

Модифицирующие символы

Графические символы в Юникоде подразделяются на протяжённые и непротяжённые (бесширинные). Непротяжённые символы при отображении не занимают места в строке. К ним относятся, в частности, знаки ударения и прочие диакритические знаки. Как протяжённые, так и непротяжённые символы имеют собственные коды. Протяжённые символы иначе называются базовыми (base characters), а непротяжённые - модифицирующими (combining characters); причём последние не могут встречаться самостоятельно. Например, символ «Á» может быть представлен как последовательность базового символа «A» (U+0061) и модифицирующего символа (U+0301) или как монолитный символ «Á» (U+00C1).

Особый тип модифицирующих символов - селекторы варианта начертания (variation selectors). Они действуют только на те символы, для которых такие варианты определены. В версии 5.0 варианты начертания определены для ряда математических символов, для символов традиционного монгольского алфавита и для символов письма Phags-Pa.

Формы нормализации

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

В стандарте Юникода определены 4 формы нормализации текста:

  • форма нормализации D (NFD - Normalization Form D) - каноническая декомпозиция. В процессе приведения текста в эту форму все составные символы рекурсивно заменяются на несколько составных, в соответствии с таблицами декомпозиции.
  • форма нормализации C (NFC - Normalization Form C) - каноническая декомпозиция с последующей канонической композицией. Сначала текст приводится к форме D, после чего выполняется каноническая композиция - текст обрабатывается от начала к концу и выполняются следующие правила:
    • символ S является начальным , если он имеет нулевой класс модификации в базе символов Юникода.
    • в любой последовательности символов, стартующей с начального символа S, символ C блокируется от S, если и только если между S и C есть какой-либо символ B, который или является начальным, или имеет одинаковый или больший класс модификации, чем C. Это правило распространяется только на строки, прошедшие каноническую декомпозицию.
    • первичным композитом считается символ, у которого есть каноническая декомпозиция в базе символов Юникода (или каноническая декомпозиция для хангыля и он не входит в список исключений.
    • символ X может быть первично совмещен с символом Y если и только если существует первичный композит Z, канонически эквивалентный последовательности .
    • если очередной символ C не блокируется последним встреченным начальным базовым символом L, и он может быть успешно первично совмещен с ним, то L заменяется на композит L-C, а C удаляется.
  • форма нормализации KD (NFKD - Normalization Form KD) - совместимая декомпозиция. При приведении в эту форму все составные символы заменяются используя как канонические карты декомпозиции Юникода, так и совместимые карты декомпозиции, после чего результат ставится в каноническом порядке.
  • форма нормализации KC (NFKC - Normalization Form KC) - совместимая декомпозиция с последующей канонической композицией.

Термины «композиция» и «декомпозиция» понимают под собой соответственно соединение или разложение символов на составные части.

Примеры


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

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

В Microsoft Windows NT и основанных на ней системах Windows 2000 и Windows XP в основном используется форма UTF-16LE. В UNIX-подобных операционных системах, GNU/Linux, BSD и Mac OS X принята форма UTF-8 для файлов и UTF-32 или UTF-8 для обработки символов в оперативной памяти.

UTF-8

UTF-8 - это представление Юникода, обеспечивающее наилучшую совместимость со старыми системами, использовавшими 8-битные символы. Текст, состоящий только из символов с номером меньше 128, при записи в UTF-8 превращается в обычный текст ASCII. И наоборот, в тексте UTF-8 любой байт со значением меньше 128 изображает символ ASCII с тем же кодом. Остальные символы Юникода изображаются последовательностями длиной от 2 до 6 байтов (на деле, только до 4 байт, поскольку использование кодов больше 2 21 не планируется), в которых первый байт всегда имеет вид 11xxxxxx , а остальные - 10xxxxxx .

Формат UTF-8 был изобретён 1992 года Кеном Томпсоном и Робом Пайком и реализован в Plan 9. Сейчас стандарт UTF-8 официально закреплён в документах RFC 3629 и ISO/IEC 10646 Annex D.

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

Unicode UTF-8 0x00000000 - 0x0000007F: 0xxxxxxx 0x00000080 - 0x000007FF: 110xxxxx 10xxxxxx 0x00000800 - 0x0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx 0x00010000 - 0x001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx (теоретически возможны, но не включены в стандарт также:) 0x00200000 - 0x03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 0x04000000 - 0x7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

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

Порядок байтов

В потоке данных UTF-16 старший байт может записываться либо перед младшим (UTF-16 B ig E ndian), либо после младшего (UTF-16 L ittle E ndian). Иногда кодировку Юникода Big Endian (UTF-16BE) называют Юникодом с обратным порядком байтов . Аналогично существует два варианта четырёхбайтной кодировки - UTF-32BE и UTF-32LE.

Для определения формата представления Юникода в текстовом файле используется приём, по которому в начале текста записывается символ U+FEFF (неразрывный пробел с нулевой шириной), также именуемый меткой порядка байтов . Этот способ позволяет различать UTF-16LE и UTF-16BE, поскольку символа U+FFFE не существует. Также он иногда применяется для обозначения формата UTF-8, хотя к этому формату и неприменимо понятие порядка байтов. Файлы, следующие этому соглашению, начинаются с таких последовательностей байтов:

UTF-8 EF BB BF UTF-16BE FE FF UTF-16LE FF FE UTF-32BE 00 00 FE FF UTF-32LE FF FE 00 00

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

© tuttiragazzi.ru, 2024
Портал о компьютерах и мобильных устройствах