pkg://howto-russian-7.2-1.noarch.rpm:1958150/
usr/
share/
doc/
HOWTO/
translations/
ru/
html/
Cyrillic-HOWTO/Cyrillic-HOWTO-10.html
info downloads
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.6">
<TITLE>The Linux Cyrillic HOWTO: Совместимость</TITLE>
<LINK HREF="Cyrillic-HOWTO-11.html" REL=next>
<LINK HREF="Cyrillic-HOWTO-9.html" REL=previous>
<LINK HREF="Cyrillic-HOWTO.html#toc10" REL=contents>
</HEAD>
<BODY>
<A HREF="Cyrillic-HOWTO-11.html">Next</A>
<A HREF="Cyrillic-HOWTO-9.html">Previous</A>
<A HREF="Cyrillic-HOWTO.html#toc10">Contents</A>
<HR>
<H2><A NAME="s10">10. Совместимость</A></H2>
<P>
<!--
Кириллица!совместимость
-->
<P>Следовать стандарту это еще не все. В реальной жизни надо обеспечить еще
и обратную совместимость. В нашем случае, это означает, что наши
настройки не должны препятствовать созданию данных, с помощью
других кодировок, отличных от стандартной. Это могут быть данные
в <B>Alt (cp866)</B> или в <B>cp1251</B>. Также должна быть возможность
запускать русскоязычные программы из MS-DOS.
<P>В большинстве случаев (кроме HTTP), достаточно обеспечить конвертацию данных
в <B>KOI8-R</B>. Если мы говорим о данных с простой структурной организацией,
то это просто - смотрите раздел
<A HREF="#conversion">Символьная перекодировка</A>.
<P>
<P>Другое дело это данные с определенной структурой. В этом случае действия
не так тривиальны. Я попробую описать стандартные подходы для решения
этой проблемы.
<P>
<H2><A NAME="mime"></A> <A NAME="ss10.1">10.1 MIME-based data compatibility</A>
</H2>
<H2><A NAME="mime"></A> <A NAME="ss10.2">10.2 Совместимость данных в MIME формате</A>
</H2>
<P>
<!--
Кириллица!совместимость!MIME формат
-->
<P><B>MIME</B> формат - стандартное архитектурно независимое представление
данных. Первоначально это представление данных было разработано для
письменных сообщений, а сейчас его используют и в других местах. Стандарт
MIME определяет формат, который открыт для расширений и позволяет
поддержку и работу со специфическими данными. Например, если я послал
письмо, содержащее <B>MIME объект</B> <CODE>video/mpeg</CODE> типа (MPEG файлы),
моя программа приема электронных сообщений автоматически декодирует его
и запустит MPEG проигрыватель.
<P>Большинство UNIX программ, предлагающих MIME сервис, для этих целей
используют пакет <CODE>metamail</CODE>, который содержит набор утилит
и файлов данных для работы с объектами MIME. Несколько файлов конфигурации
(<CODE>/etc/mailcap</CODE> - для системной настройки и <CODE>~/.mailcap</CODE> -
для пользовательской настройки) определяют директивы для работы с объектами
MIME различных типов.
<P>Поэтому, если вы получили поток MIME данных, содержащий текст в одной
из устаревших кодировок, вы можите определить соответствующие MIME-директивы
для конвертации такого текста в KOI8.
<P>Ниже перечислены MIME-законы, которые описывают правила работы с
обычными текстами и текстами в richtext формате, использующих
не особенно нужные (устаревшие) кодировки, описанные выше. Вы можете
вставить эти директивы в один из файлов конфигурации MIME.
<P>Обратите внимание: Эти директивы используют пакет <CODE>translit</CODE>,
для того, чтобы производить само преобразование. Для более
полной информации об этой программе и для информации по перекодировки
смотрите раздел
<A HREF="#conversion">Символьная перекодировка</A>.
<P>
<PRE>
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
</PRE>
<P>Достаточно, это работает только в случае обычного текст. Бинарные
файлы данных должны сами отрабатывать данные в различных кодировках
(По крайней мере, это должны делать программы, создавшие их). Поэтому
если вы послали файл Microsoft Word в кодировке <B>cp1251</B>,
то с этим должна разобраться программа, в которой вы читаете этот текст
(Например M$ Word или Applix Words).
<P>К несчастью действительная ситуация далека от идеала. Много программных
продуктов имеют собственные идеи по поводу того, как использовать
MIME. До недавнего времени Microsoft Mail использовал испорченный
механизм работы с MIME. Хотя и Netscape Navigator/Communicator
клиент отправки/приема сообщений известен тем, что шлет текст письма
в <B>cp1251</B>, а его заголовок в <EM>charset=koi8-r</EM> кодировки
и наоборот.
<P>
<H2><A NAME="conversion"></A> <A NAME="ss10.3">10.3 Символьная перекодировка</A>
</H2>
<P>
<!--
Cyrillic!compatibility!character conversion
-->
<P>В Internet можно найти множество программ, перекодирующих кириллические
тексты. Каждая из них имеет свою изюминку и отличается степенью
поддержки кириллицы.
<P>С моей точки зрения утилиты должны быть стандартными. В нашем, частном,
случае такой "стандартной" утилитой является <CODE>GNU recode</CODE>. К несчастью
версия, которая "обитает" на официальном GNU сайте (3.4) пока не поддерживает
кириллицу (только <B>ISO-8859-5</B>). Я сделал набор таблиц перекодировки
для <B>KOI8-R</B>, <B>Alt</B>, и <B>cp1251</B> и послал их <CODE>recode</CODE> - координатору.
Он обещал обеспечить поддержку кириллицы в следующем релизе программы.
Как только это случится, то я перепишу этот параграф, для того чтобы
рекомендовать
<CODE>GNU recode</CODE>, как стандартную утилиту перекодировки для кириллицы.
<P>Тем временем, я пока рекомендую пакет
<A HREF="ftp://ftp.osc.edu/pub/russian/translit/translit.tar.Z">translit</A>. Он
поддерживает много популярных кодировок и даже способен создавать
TeX файлы (см. раздел
<A HREF="Cyrillic-HOWTO-7.html#tex">tex</A>
) на русском языке. Кроме того, для
пользователей RedHat существует RPMка -
<A HREF="ftp://ftp.redhat.com/pub/contrib/i386/translit-1.03-1.i386.rpm">RPM package</A>.
<P>Для других программ преобразования - загляните на страничку
<A HREF="http://www.siber.com/sib/russify/">SovInformBureau</A>
или на
<A HREF="ftp://ftp.funet.fi/pub/culture/russian/comp/converters/">ftp.funet.fi</A>. Вы даже можете использовать специальную моду
для <CODE>emacs</CODE> (Смотрите раздел
<A HREF="Cyrillic-HOWTO-4.html#emacs">Emacs и XEmacs</A>).
<P>
<P>
<H2><A NAME="win_fs"></A> <A NAME="ss10.4">10.4 Кириллические имена файлов в файловой системе M$ Windows</A>
</H2>
<P>
<!--
Кириллицы!Файловая система M$ Windows
-->
<P>Windows имеет возможность давать имена файлов в кодировке Unicode,
поэтому пользователи могут давать осмысленные имена своим файлам.
Linux, однако не дает полной поддержки для Unicode, поэтому если вы
монтируете диск Windows <EM>VFAT</EM>, то вы увидите что подобные имена
состоят из вопросительных знаков и прочего мусора.
<P>Эдесь указан путь как получить правильное преобразование:
<P>
<OL>
<LI>Убедитесь, что ваше ядро скомпилирована с поддержкой codepage
(в частности с поддержкой кодовых страниц 866 и KOI8-R)
</LI>
<LI>Добавьте следующие опции при выполнении mount команды <CODE>mount</CODE>:
<PRE>
codepage=866,iocharset=koi8-r
</PRE>
</LI>
</OL>
<P>Для подробностей смотрите <CODE>Documentation/filesystems/vfat.txt</CODE>
в исходниках ядра Linux.
<P>
<P>
<H2><A NAME="dosemu"></A> <A NAME="ss10.5">10.5 Поддержка кириллицы в DOS эмуляторе</A>
</H2>
<P>
<!--
Кириллица!DOS эмулятор
-->
<P>Это, видимо, единственный программный продукт, которые требует
присутствия <CODE>Alt</CODE> кодировки. Основанием является то, что <CODE>Alt</CODE>-
это родная кириллическая кодовая страница DOS. Большенство программ,
работающих в DOS с кириллицей ориентированы на <CODE>Alt</CODE>.
<P>Для консольной версии (<CODE>dos</CODE>) вы должны загрузить только
клавиатуру и экранный драйвер. Большинство драйверов DOS будет
прекрасно работать. Я лично использую <CODE>rk</CODE> драйвер А. Страхова,
который работает и для консоли, и X версии <CODE>dosemu</CODE>. Другая
альтернатива это <CODE>r</CODE> драйвер Вадима Курлянда. Он прекрасно
настраивается и поддерживает много кодировок в том числе, <CODE>Alt</CODE> и
<CODE>KOI8</CODE>. Однако он не будет работать для X Windows (по крайней мере
версия 1.14, которую я использую, (Примечание переводчика: сейчас есть
версия 2.0 этого драйвера и его развитие прекращено).
<P>Оба русификатора можно найти на большинстве Российских
Internet архивах, например на
<A HREF="ftp://ftp.kiae.su/pub/cyrillic/msdos">ftp архиве Курчатовского Института Ядерной Физики</A>.
<P>Для Xовых версии <CODE>dosemu</CODE> вы должны установить
соответствующий X шрифт. Алексей Богданов прислал мне такой шрифт
по электронной почте. Это - родной шрифт <CODE>vga</CODE> из дистрибутива
<CODE>dosemu</CODE>, измененный для <CODE>Alt</CODE> кодировки. К сожалению я не знаю, кто
автор этого шрифта и где его официальная страничка. Я помещу этот шрифт
в мой каталог на
<A HREF="!!!">авторской страничке</A><P>Для установки шрифтов для <CODE>dosemu</CODE> вы должны
To setup the font for <CODE>dosemu</CODE> you should
<P>
<UL>
<LI>Сделайте этот шрифт доступным X. серверу, как это сделать описано в
<A HREF="Cyrillic-HOWTO-3.html#xfonts">Настройка шрифтов X Windows</A>.
</LI>
<LI>Прикрутитe этот шрифт к <CODE>dosemu</CODE>. Если шрифт только заменяет
первоначальный шрифт <CODE>vga</CODE>, то он будет опознан по умолчанию.
Иначе, вы должны описать его в <CODE>/etc/dosemu.conf</CODE>::
<PRE>
# Font to use (without filename extensions). For example:
X { updatefreq 8 title "MS DOS" icon_name "xdos" font "vga-alt"}
</PRE>
</LI>
</UL>
<P>И в заключение, вы должны загрузить драйвер клавиатуры.
Обратите внимание, вам не нужны экранные драйверы в X окне.
Не все драйверы будут работать, но по крайней мере
два из них будут: <CODE>rk</CODE> А. Страхова, и <CODE>cyrkeyb</CODE> Pete Kvitek.
<P>
<P>
<HR>
<A HREF="Cyrillic-HOWTO-11.html">Next</A>
<A HREF="Cyrillic-HOWTO-9.html">Previous</A>
<A HREF="Cyrillic-HOWTO.html#toc10">Contents</A>
</BODY>
</HTML>