The Linux Cyrillic HOWTO: Совместимость

Next Previous Contents

## 10. Совместимость

Следовать стандарту это еще не все. В реальной жизни надо обеспечить еще и обратную совместимость. В нашем случае, это означает, что наши настройки не должны препятствовать созданию данных, с помощью других кодировок, отличных от стандартной. Это могут быть данные в Alt (cp866) или в cp1251. Также должна быть возможность запускать русскоязычные программы из MS-DOS.

В большинстве случаев (кроме HTTP), достаточно обеспечить конвертацию данных в KOI8-R. Если мы говорим о данных с простой структурной организацией, то это просто - смотрите раздел Символьная перекодировка.

Другое дело это данные с определенной структурой. В этом случае действия не так тривиальны. Я попробую описать стандартные подходы для решения этой проблемы.

## 10.1 MIME-based data compatibility

## 10.2 Совместимость данных в MIME формате

MIME формат - стандартное архитектурно независимое представление данных. Первоначально это представление данных было разработано для письменных сообщений, а сейчас его используют и в других местах. Стандарт MIME определяет формат, который открыт для расширений и позволяет поддержку и работу со специфическими данными. Например, если я послал письмо, содержащее MIME объект `video/mpeg` типа (MPEG файлы), моя программа приема электронных сообщений автоматически декодирует его и запустит MPEG проигрыватель.

Большинство UNIX программ, предлагающих MIME сервис, для этих целей используют пакет `metamail`, который содержит набор утилит и файлов данных для работы с объектами MIME. Несколько файлов конфигурации (`/etc/mailcap` - для системной настройки и `~/.mailcap` - для пользовательской настройки) определяют директивы для работы с объектами MIME различных типов.

Поэтому, если вы получили поток MIME данных, содержащий текст в одной из устаревших кодировок, вы можите определить соответствующие MIME-директивы для конвертации такого текста в KOI8.

Ниже перечислены MIME-законы, которые описывают правила работы с обычными текстами и текстами в richtext формате, использующих не особенно нужные (устаревшие) кодировки, описанные выше. Вы можете вставить эти директивы в один из файлов конфигурации MIME.

Обратите внимание: Эти директивы используют пакет `translit`, для того, чтобы производить само преобразование. Для более полной информации об этой программе и для информации по перекодировки смотрите раздел Символьная перекодировка.

    text/plain; translit -t cp1251-koi8.rus < %s; test=test \
        "`echo %{charset} | tr '[A-Z]' '[a-z]'`"  = cp1251; copiousoutput

    text/richtext; translit -t cp1251-koi8.rus < %s; test=test \
        "`echo %{charset} | tr '[A-Z]' '[a-z]'`"  = cp1251; copiousoutput

    text/plain; translit -t alt-koi8.rus < %s; test=test \
        "`echo %{charset} | tr '[A-Z]' '[a-z]'`"  = cp866; copiousoutput

    text/richtext; translit -t alt-koi8.rus < %s; test=test \
        "`echo %{charset} | tr '[A-Z]' '[a-z]'`"  = cp866; copiousoutput

    text/plain; translit -t alt-koi8.rus < %s; test=test \
        "`echo %{charset} | tr '[A-Z]' '[a-z]'`"  = alt; copiousoutput

    text/richtext; translit -t alt-koi8.rus < %s; test=test \
        "`echo %{charset} | tr '[A-Z]' '[a-z]'`"  = alt; copiousoutput

Достаточно, это работает только в случае обычного текст. Бинарные файлы данных должны сами отрабатывать данные в различных кодировках (По крайней мере, это должны делать программы, создавшие их). Поэтому если вы послали файл Microsoft Word в кодировке cp1251, то с этим должна разобраться программа, в которой вы читаете этот текст (Например M$ Word или Applix Words).

К несчастью действительная ситуация далека от идеала. Много программных продуктов имеют собственные идеи по поводу того, как использовать MIME. До недавнего времени Microsoft Mail использовал испорченный механизм работы с MIME. Хотя и Netscape Navigator/Communicator клиент отправки/приема сообщений известен тем, что шлет текст письма в cp1251, а его заголовок в charset=koi8-r кодировки и наоборот.

## 10.3 Символьная перекодировка

В Internet можно найти множество программ, перекодирующих кириллические тексты. Каждая из них имеет свою изюминку и отличается степенью поддержки кириллицы.

С моей точки зрения утилиты должны быть стандартными. В нашем, частном, случае такой "стандартной" утилитой является `GNU recode`. К несчастью версия, которая "обитает" на официальном GNU сайте (3.4) пока не поддерживает кириллицу (только ISO-8859-5). Я сделал набор таблиц перекодировки для KOI8-R, Alt, и cp1251 и послал их `recode` - координатору. Он обещал обеспечить поддержку кириллицы в следующем релизе программы. Как только это случится, то я перепишу этот параграф, для того чтобы рекомендовать `GNU recode`, как стандартную утилиту перекодировки для кириллицы.

Тем временем, я пока рекомендую пакет translit. Он поддерживает много популярных кодировок и даже способен создавать TeX файлы (см. раздел tex ) на русском языке. Кроме того, для пользователей RedHat существует RPMка - RPM package.

Для других программ преобразования - загляните на страничку SovInformBureau или на ftp.funet.fi. Вы даже можете использовать специальную моду для `emacs` (Смотрите раздел Emacs и XEmacs).

## 10.4 Кириллические имена файлов в файловой системе M$ Windows

Windows имеет возможность давать имена файлов в кодировке Unicode, поэтому пользователи могут давать осмысленные имена своим файлам. Linux, однако не дает полной поддержки для Unicode, поэтому если вы монтируете диск Windows VFAT, то вы увидите что подобные имена состоят из вопросительных знаков и прочего мусора.

Эдесь указан путь как получить правильное преобразование:

1. Убедитесь, что ваше ядро скомпилирована с поддержкой codepage (в частности с поддержкой кодовых страниц 866 и KOI8-R)
2. Добавьте следующие опции при выполнении mount команды `mount`:

       codepage=866,iocharset=koi8-r

Для подробностей смотрите `Documentation/filesystems/vfat.txt` в исходниках ядра Linux.

## 10.5 Поддержка кириллицы в DOS эмуляторе

Это, видимо, единственный программный продукт, которые требует присутствия `Alt` кодировки. Основанием является то, что `Alt`- это родная кириллическая кодовая страница DOS. Большенство программ, работающих в DOS с кириллицей ориентированы на `Alt`.

Для консольной версии (`dos`) вы должны загрузить только клавиатуру и экранный драйвер. Большинство драйверов DOS будет прекрасно работать. Я лично использую `rk` драйвер А. Страхова, который работает и для консоли, и X версии `dosemu`. Другая альтернатива это `r` драйвер Вадима Курлянда. Он прекрасно настраивается и поддерживает много кодировок в том числе, `Alt` и `KOI8`. Однако он не будет работать для X Windows (по крайней мере версия 1.14, которую я использую, (Примечание переводчика: сейчас есть версия 2.0 этого драйвера и его развитие прекращено).

Оба русификатора можно найти на большинстве Российских Internet архивах, например на ftp архиве Курчатовского Института Ядерной Физики.

Для Xовых версии `dosemu` вы должны установить соответствующий X шрифт. Алексей Богданов прислал мне такой шрифт по электронной почте. Это - родной шрифт `vga` из дистрибутива `dosemu`, измененный для `Alt` кодировки. К сожалению я не знаю, кто автор этого шрифта и где его официальная страничка. Я помещу этот шрифт в мой каталог на авторской страничке

Для установки шрифтов для `dosemu` вы должны To setup the font for `dosemu` you should

- Сделайте этот шрифт доступным X. серверу, как это сделать описано в Настройка шрифтов X Windows.
- Прикрутитe этот шрифт к `dosemu`. Если шрифт только заменяет первоначальный шрифт `vga`, то он будет опознан по умолчанию. Иначе, вы должны описать его в `/etc/dosemu.conf`::

      # Font to use (without filename extensions). For example:
      X { updatefreq 8 title "MS DOS" icon_name "xdos" font "vga-alt"}

И в заключение, вы должны загрузить драйвер клавиатуры. Обратите внимание, вам не нужны экранные драйверы в X окне. Не все драйверы будут работать, но по крайней мере два из них будут: `rk` А. Страхова, и `cyrkeyb` Pete Kvitek.

Next Previous Contents