Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Пользователю -> Костромин В.А. -> "Самоучитель Linux для пользователя" -> 112

Самоучитель Linux для пользователя - Костромин В.А.

Костромин В.А. Самоучитель Linux для пользователя — СПб.: БХВ Петербург, 2003. — 672 c.
ISBN 5-94157-183-6
Скачать (прямая ссылка): samouchiteldlyapolz2003.djvu
Предыдущая << 1 .. 106 107 108 109 110 111 < 112 > 113 114 115 116 117 118 .. 274 >> Следующая


Кодировка KOI-8 была разработана изначально с ориентировкой на UNIX. Так как UNIX в своей основе сетевая ОС, то основной идей при создании KOI-8 была идея об обеспечении перемещения кириллической информации по сети. Но для передачи-то использовался 7-битный стандарт ASCII. Разработчики поместили кириллические символы в верхней части таблицы таким образом, что позиции кириллических символов соответствуют их фонетическим аналогам в английском алфавите в нижней части таблицы. Это означает, что, если в тексте, написанном в KOI-8, мы убираем восьмой бит каждого символа, то мы все еще имеем "читабельный"текст, хотя он и написан английскими символами! Не удивительно, что KOI8-R быстро стал фактически стандартом для кириллицы в Интернет, что и нашло отражение в RFC 1489 ("Registration of a Cyrillic Character Set"). Автором этого документа является А. Чернов, который проделал огромный объем работы, чтобы превратить KOI-8 в стандарт Интернета.

Международная организация по стандартизации (ISO) внесла свою лепту в создание различных кодировок кириллицы, когда ввела семейство стандартов, известных как ISO 8859-Х. Это семейство есть совокупность 8-битных кодировок, где младшая половина каждой кодировки (символы с кодами О— 127) соответствует ASCII, а старшая половина определяет символы для различных языков. Например:

П 8859-0 — новый европейский стандарт (так называемый Latin 0);

? 8859-1 — Европа, Латинская Америка (также известный как Latin 1); П 8859-2 — Восточная Европа;

? 8859-5 — кириллица;

? 8859-8 - идиш.

Фирма Microsoft еще больше запутала ситуацию с кодировками для русского языка, когда при разработке Windows ввела кодировку CP-1251

Таблицы кодировок, содержащие 256 символов, стали называть расширенными кодами ASCII (потому что в основе любой из них лежит 128-символьный код ASCII), кодовыми страницами или английским термином character set (который часто сокращают до charset). Гпава 9. Подключение и настройка аппаратных устройств.

.263

Но в мире есть языки, такие как китайский или японский, для которых 256 символов в принципе недостаточно. Кроме того, всегда существует проблема вывода или сохранения в одном файле одновременно текстов на разных языках (например, при цитировании). Поэтому была разработана универсальная кодовая таблица UNICODE, содержащая символы, применяемые в языках всех народов мира, а также различные служебные и вспомогательные символы (знаки препинания, математические и технические символы, стрелки, диакритические знаки и т. д.). Очевидно, что одного байта недостаточно для кодирования такого большого множества символов. Поэтому в UNICODE используются 16-битные (2- байтные) коды, что позволяет представить 65 536 символов. К настоящему времени задействовано около 49 ООО кодов (последнее значительное изменение — введение символа валюты EURO в сентябре 1998 г.). Для совместимости с предыдущими кодировками первые 128 кодов совпадают со стандартом ASCII. На рис. 9.1 схематично представлено размещение символов разных языков в кодовом пространстве UNICODE.

О о 5 L-Ll Ll L-&
? I t lit ?
о Є-5Й..Р и л с « со з •* -1O5 - 1 I Eoo э cl W OJ о JC tA И ^ I а 1 1 - if * о

Рис. 9.1. Структура UNICODE

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

Таблица 9.2. Примеры именования кодов UNICODE

Символ UNICODE Название символа (Character Name)
А U+0041 LATIN CAPITAL LETTER A
а U+0061 LATIN SMALL LETTER A
Ю U+042E CYRILLIC CAPITAL LETTER YU
+ U+002B PLUS SIGN
1 U+0031 DIGIT ONE 264_

і Самоучитель Linux для пользователя

Таблица 9.2 (окончание)

Символ UNICODE Название символа (Character Name)

Ll U+03A9 GREEK CAPITAL LETTER OMEGA

I U+2569 BOX DRAWINGS DOUBLE UP AND HORIZONTAL

Еще одним компонентом стандарта UNICODE являются алгоритмы для взаимно-однозначного преобразования кодов UNICODE в последовательности байтов переменной длины. Необходимость таких алгоритмов обусловлена тем, что не все приложения умеют работать с UNICODE. Некоторые приложения понимают только 7-битные ASCII-коды, другие приложения — 8-битные (расширенные) ASCII-коды. Для представления символов, не поместившихся, соответственно, в 178-симкольный или 256-симрольныи набор, такие приложения используют цепочки байтов переменной длины. Алгоритм UTF-7 служит для обратимого преобразования кодов UNICODE в цепочки 7-битных ASCII-кодов, a UTF-8 — для обратимого преобразования кодов UNICODE в цепочки из расширенных 8-битных ASCII-кодов. Подробнее об алгоритмах UTF-7 и UTF-8 и кодировках вообще вы можете прочитать в [П11.3 — П11.5] (см. приложение).

Отметим, что и ASCII, и UNICODE, и другие стандарты кодировки символов не определяют изображения символов, а только состав набора символов и способ его представления в компьютере. Кроме того (что, может быть, не сразу очевидно), они еще задают порядок перечисления символов в наборе, который очень важен, т. к. он влияет самым существенным образом на алгоритмы сортировки. Именно таблицу соответствия символов из какого-то определенного набора (скажем, символов, применяемых для представления информации на английском языке, или на разных языках, как в случае с UNICODE) и обозначают термином таблица кодировки символов или charset. Каждая стандартная кодировка имеет имя, например, KOI8-R, ISO 8859-1, ASCII. К сожалению, стандарта на имена кодировок не существует.
Предыдущая << 1 .. 106 107 108 109 110 111 < 112 > 113 114 115 116 117 118 .. 274 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100