ISO-8859-5, кодовая страница Macintosh и другие, но вместе с тем не существует единого стандарта, принятого де-факто. В итоге, для того, чтобы быть уверенным, что документ будет прочтен, его нужно представлять в трех или четырех кодировках, что очень неудобно.

Для того чтобы решить эти и некоторые другие проблемы, был создан стандарт Unicode. Unicode присваивает уникальный код любому символу, независимо от платформы, независимо от программы, независимо от языка. Символам кириллицы Unicode присваивает коды в диапазоне от #x400 до #x4ff. Таблица кодов для кириллицы может быть найдена в формате PDF на Web-сайте Unicode:

http://www.unicode.org/charts/PDF/U0400.pdf.

Использование Unicode

Для описания символов сотен языков всего мира, а также других символьных обозначений (например, математических символов) Unicode позволяет использовать три формы кодирования — UTF-8, UTF-16 и UTF-32.

UTF-8

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

□ Символы с кодами в интервале #x0#x7F кодируются одним байтом, первый бит которого равен нулю.

□ Для остальных символов число байт определяется количеством ведущих единиц первого байта последовательности.

□ Два первые бита каждого последующего байта равны единице и нулю соответственно.

□ Все остальные биты используются для кодирования символа.

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

Таблица 1.2. Формы кодирования символов в UTF-8

Диапазон Кол-во байт Форма кодирования Кол-во бит
#x0-#x7F 1 0xxxxxxx 7
#x80-#x7FF 2 110xxxxx 10xxxxxx 11
#x800-#xFFFF 3 1110xxxx 10xxxxxx 10xxxxxx 16
#x10000- #x1FFFFF 4 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 21

К примеру, символу 'Э' (заглавной русской букве 'Э') Unicode присваивает код #x42D или 10000101101 в двоичном представлении. Это значение входит в интервал #x80-#x7ff, значит, для кодирования нужно использовать двух- байтовую форму вида 110xxxxx 10xxxxxx, где символы 'x' обозначают 11 бит, доступных для кодировки. Таким образом, данному символу будет соответствовать следующий двоичный код:

11010000 10101101

или #xD0AD в шестнадцатеричном представлении.

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

Удобство UTF-8 заключается в том, что кодировка первых 127 символов совпадает с широко распространенной 7-битной кодировкой ASCII. Это делает возможным использование уже существующего программного обеспечения для обработки текста в UTF-8, например текстовых редакторов.

UTF-16

Для записи наиболее часто используемых символов с кодами, меньшими #xFFFF, UTF-16 использует двухбайтные последовательности, в которых каждый бит соответствует биту кода. Помимо этого, в UTF-16 могут быть также представлены символы с кодами в диапазоне #10000- #FFFFF. Для кодирования этих символов в UTF-16 применяются пары 16-битных значений в интервале #xD800-#xDFFF (ранее зарезервированные Unicode), называемые суррогатными парами (surrogate pairs). Младшие 10 бит каждого значения отводятся на кодировку символа, что в итоге дает 20 бит, достаточных для записи любого кода, не превышающего #xFFFFF (табл. 1.3).

Таблица 1.3. Формы кодирования символов в UTF- 16

Диапазон Кол-во байт Форма кодирования Кол-во бит
#x0-#xD7FF
Вы читаете Технология XSLT
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату