Перед тем, как мы начнем настраивать различные части системы,
нам надо настроить пару простых вещей. Большинство утилит, описываемых
ниже, предполагают, что кириллические шрифты доступны и пользователь
может вводить кириллические символы. Чтобы это действительно стало
правдой, нам следует настроить окружение для того, чтобы обеспечить
и шрифты, и возможность ввода кириллицы.
Linux поддерживает два интерфейса для отображения информации, два
различных режима. Один из них -- это текстовый режим, а другой -- графический,
предоставляемый средствами X-Window. Оба этих режима требуют разной
настройки, которая описывается ниже.
Чтобы понимать и печатать символы различных языков, система и
программное обеспечение должны уметь отличать их от
других символов. То есть каждый уникальный символ должен иметь
уникальное представление внутри операционной системы или внутри
специфического пакета программ. Такая совокупность всех
уникальных символов, которые система способна распознать,
называется кодировкой.
Во время создания большинства операционных систем никто не
позаботился предусмотреть возможность представления информации
в программах на других языках, отличных от английского.
Поэтому наиболее популярной кодировкой была (и фактически ей и
остается) ASCII (Американский Стандартный Код для
Информационного Обмена).
Стандарт ASCII (или ASCII с 7-ми битами) включает в себя
128 уникальных символов. Они подразделяются на символы, которые
ASCII определяет как собственно печатаемые символы, и на
так называемые символы управления, которые имели специальные
значения в старых протоколах связи. Каждому элементу набора
соответствует целочисленный символьный код (0-127). Подмножество
печатаемых символов представляют те, которые находят на клавиатуре
пишущей машинки, с некоторыми добавлениями. Каждый
символ занимал 7 младших значимых битов байта, тогда как старший
разряд использовался для целей управления (то есть для
управления передачи в старых пакетах связи).
Концепция ASCII с 7 битами была расширена до ASCII с 8 битами
(или расширенный ASCII). В этой кодировке диапазон символов
соответствует кодам от 0 до 255. Младшие биты (0-127) -- чистый
ASCII, в то время как старший разряд добавляет еще 127 символов.
Так как эта кодировка обратно совместима с ASCII (символ все еще
занимает 8 бит и коды полностью соответствуют старому ASCII),
эта кодировка стала широко использоваться.
Стандарт ASCII с 8 битами не определяет содержание верхней
половины таблицы кодировки. Поэтому МЕЖДУНАРОДНАЯ ОРГАНИЗАЦИЯ ПО
СТАНДАРТИЗАЦИИ (ISO) взяла ответственность по определению
семейства стандартов, известных как семейство ISO 8859-X. Это
семейство представляет собой совокупность 8-ми битных кодировок, где младшая
половина каждой кодировки (символы с кодами 0-127) соответствует
ASCII, а старшая половина определяет символы для различных языков.
Например, следующие кодовые страницы определены для:
- 8859-0 -- Новый европейский стандарт (так называемый Latin 0)
- 8859-1 -- Европа, Латинская Америка (также известный как Latin 1)
- 8859-2 -- Восточная Европа
- 8859-5 -- Кириллица
- 8859-8 -- Идиш
В Latin 1 старшая половина таблицы определяет различные
символы, которые не являются частью английского алфавита, но
присутствует в различных европейских языках (немецкие umlauts,
французские диакритические знаки и т.д).
Другая популярная реализация расширенного ASCII -- это так
называемая кодовая страница IBM (названная по имени компьютерной
компании, которая создала эту кодировку для своих персональных
компьютеров). Эта кодировка в старшей половине содержит
псевдографические символы.
Программное обеспечение, которое не делает никаких
предположений о символах, использующих 8-й бит ASCII-данных
(то есть не использует их для каких-то своих внутренних нужд)
называется чисто 8-ми битными (примером не чисто 8-ми битного
программного обеспечения является использование в фидо буквы Н
в качестве управляющего символа). Некоторые более старые программы,
разработанные для ASCII с 7 битами в памяти, а не для чистых 8-ми бит,
могут работать неправильно с данными в расширенном коде ASCII.
Большинство программ, однако, способны работать с расширенным
ASCII по умолчанию или для этого требуется простая переконфигурация.
Подобные простейшие программы, требующие какой-либо настройки,
в этом документе не рассматриваются. Вместо этого я сфокусировал
свои усилия на более сложных пакетах.
Для информации о том, как создавать свое чисто 8-ми
битное программное обеспечение, смотрите раздел
Locale зависимое программирование.
Так как в большинстве систем символы описываются 8-ю битами, то
нет никакого способа расширить ASCII еще больше. Способ создания
новых символов в ASCII -- это просто создание других расширенных
ASCII реализаций. Именно так кириллица и была введена
в ASCII.
Мы уже упомянули стандарт ISO 8859-5 как тот, в котором
определяются кодировки для кириллицы. Но поскольку (как это часто
случается со стандартами) он был разработан без принятия во
внимание реальных процессов, проходящих в СССР (когда это еще
было), то единственное, что было действительно достигнуто с введением
этого стандарта, так это только увеличение беспорядка с кодировками
кириллицы. В сообществе Internet очень популярна
кодировка KOI8-R (см. ниже). Кодировка ISO 8859-5 используется
большими компаниями, создающими программное обеспечение с возможностью
обработки кириллической информации. К подобным программам, как правило,
относятся большие базы данных, решения, основанные на базе OpenVMS и т.д.
Сказанное выше относится только к пост-российскому пространству -- кодировка
ISO 8859-5 является стандартом кириллицы по крайней мере в Македонии
и Югославии.
Другие стандарты для кириллицы включают так называемую Alt
кодировку и кодовую страницу Microsoft CP1251. Вышеупомянутый Alt
стандарт был разработан компанией Microsoft для МС-ДОС
довольно давно. Тогда еще слыхом не слыхивали про сети из IBM PC, и поэтому
основное усилие состояло в
том, чтобы сделать этот стандарт максимально
совместимым со стандартом IBM. Поэтому Alt кодировка -- это та
самая IBM кодовая страница, где все
специфические европейские символы в верхней половине были заменены
на кириллицу, оставляя псевдографические символы нетронутыми.
Следовательно, это не портило вид программ, использующих для
работы текстовые окна, а также обеспечило символы кириллицы в них. Alt
стандарт все еще жив и чрезвычайно популярен в среде МС-ДОС (система
МС-ДОС тоже жива, про OS/2 говорят, что она тоже жива -- не знаю, не видел :) ).
Microsoft CP1251 кодовая страница -- это попытка Microsoft
придумать новый стандарт для кодировки кириллицы в Windows.
Насколько я знаю, это не совместимо с чем-либо еще.
Однако, в некоторых странах -- например, в Болгарии
и, вероятно, в Беларуссии, cp1251 является
стандартной кодировкой для Linux и для e-mail.
Ну и наконец: стандарт KOI8. В отличие от Alt и CP1251,
он был разработан довольно давно для UNIX-машин. Так как говоря о UNIX
мы подразумеваем
сеть, то основной идей при создании KOI8 стандарта была
идея об обеспечении перемещения кириллической информации по сети.
Еще раз вернемся в далекое прошлое. Обычно все работали
только со стандартным (7-ми битным)
ASCII. 8-ой бит каждого символа указывал на то, что он или управляющий
символ, или просто мусор. Обычно никто не слал данные чисто 8-ми битными
(каждый норовил оттяпать 8-ой бит у символов). Разработчики KOI8
применили очень продуманный подход. Они поместили символы русской кириллицы
в верхней части расширенной ASCII таблицы таким образом, что
позиции кириллических символов соответствуют их фонетическим
аналогам в английском алфавите в нижней части таблицы. Это означает,
что если в тексте, написанном в KOI8, убирать
восьмой бит каждого символа, то мы все еще имеем "читабельный"
текст, хотя он и написан английскими символами!
Следует отметить, что KOI8-R подходит только для русских текстов, и
как следствие был создан украинский вариант KOI8: KOI8-U.
Кроме Русской кириллицы KOI8-R описывает
еще и Болгарскую кириллицу. Но кодировка KOI8 неизвестна и поэтому ее
употребление в Болгарии бессмысленно. Даже самые ранние болгарские
кириллизации были только для cp1251, хотя и делались на основе
русских.
Не удивительно, что KOI8-R быстро стал фактически стандартом
для русской кириллицы в Internet.
Андрей А. Чернов проделал огромный
объем работы, чтобы создать стандарт. Он - автор
RFC 1489
("Registration of a Cyrillic Character Set").
Также существуют и другие стандарты, которые отличны от ASCII и
гораздо более адаптируемы. Наиболее известный из них --
это Unicode. Этот стандарт пока не прижился в Unix
вообще и в Linux в частности, но уже сейчас появляется все больше
и больше программного обеспечения, которое имеет поддержку
Unicode.
UNICODE
UNICODE -- частичная реализация стандарта ISO 10646, совместим
снизу вверх, т.е. первые 256 символов UNICODE = Latin-1 (ISO 8859-1).
В настоящее время распределено около 40.000 позиций из возможных 65.535 (2 байта
на букву), и им соответственно присвоены
стандартные имена. Последнее значительное изменение -- введение
символа валюты EURO -- произошло в сентябре 1998 г.
Позиции зарезервированы за буквами практически всех
известных алфавитов, включая древнеегипетские иероглифы -- то
есть, используя этот стандарт, можно писать одновременно на русском
и греческом, делая вставки на японском,
с использованием одного-единственного шрифта (Подробности --
`man 7 utf-8'
).
Позиции, под которые по стандарту надо отводить по 4 байта -- то
есть 2147418112 символов -- пока не заняты.
Подробнее про этот
формат можно посмотреть по адресу
http://www.unicode.org.
Посмотреть набор символов UNICODE можно здесь :
http://charts.unicode.org/ .
Вперед
Назад
Содержание