Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

12. Совместимость

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

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

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

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

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

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

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

Ниже перечислены MIME-законы, которые описывают правила работы с обычными текстами и текстами в richtext формате, использующих другие кодировки, отличные от KOI8. Вы можете вставить эти директивы в один из файлов конфигурации 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, то с этим должна разобраться программа, в которой вы читаете этот текст (Например MS Word или Applix Words).

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

Довольно часто случается так, что те, кто посылают вам письма, неправильно настраивают (или не настраивают вообще, а по умолчанию стоит черте-че -- пример Outlook) свои почтовые программы. В заголовках писем вместо windows-1251 чаще всего стоит iso-8859-1, US-ASCII или UNKNOWN-8BIT. Для исправления получаемых писем создайте файл ~/.procmailrc со следующим содержанием (но я предупреждаю вас, что после ошибки в ~/.procmailrc вы можете потерять всю вашу почту):


:0 fHw
* ^Content-Type: *text/plain; *charset="?(iso-8859-1|US-ASCII|UNKNOWN-8BIT)"?
| formail -i "Content-Type: text/plain; charset=windows-1251"

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

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

С моей точки зрения, утилиты должны быть стандартными. В нашем, частном, случае такой "стандартной"  утилитой является GNU recode. ( http://www.iro.umontreal.ca/~pinard/recode/).

Например, чтобы перекодировать из cp1251 в koi8-r, следует сказать:

$ recode CP1251..KOI8-R  winfile.txt

Так же широко распространены iconv (входит в поставку glibc)

Опять же cp1251 в koi8-r:

$ iconv -f866 -tKOI8-R -o<outfile> infile

Можно воспользоваться пакетом translit. Он поддерживает много популярных кодировок и даже способен создавать TeX файлы (см. раздел tex ) на русском языке.

В конце концов сгодится обычный lynx (cp1251 в koi8-r):

$ lynx -assume_local_charset cp1251  file.txt

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

12.3 Кириллические имена файлов в файловой системе MS Windows

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

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

  1. Убедитесь, что ваше ядро скомпилировано с поддержкой codepage (в частности, с поддержкой кодовых страниц cp866 и KOI8-R -- возможно, в виде модулей ls /lib/modules/`uname -r`/fs/nls_*).
  2. Добавьте следующие опции при выполнении mount команды mount:
    codepage=866,iocharset=koi8-r
    
    или пропишите в /etc/fstab/ примерно такую строчку:
    /dev/hda5 /mnt/d vfat noexec,dev,suid,rw,umask=002, codepage=866,iocharset=koi8-r, gid=101 0 0
    
    для выяснения подробностей смотрите man mount.

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

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

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

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

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

Кроме того, есть патч в http://www.ice.ru/~vitus/misc/, который позволяет обойтись без русификатора клавиатуры. Этот патч рекомендуется в X-ах, так как позволяет избежать двух клавиш переключения: одной в DOS, другой -- на остальном десктопе. Для работы с удаленным dosemu (по telnet/ssh/rsh) патч является необходимым условием.

Для X-овых версий dosemu вы должны установить соответствующий X шрифт с 866-ой кодировкой. Взять можно по адресам http://www.ice.ru/~vitus/works/x11.html, или ftp.dosemu.org, или взять у автора (эти шрифты сделал Дима Болховитянов) www.inp.nsk.su/~bolkhov.

Кроме шрифтов в кодировке cp866, там можно найти и другие кириллические шрифты. Например, vga_bul8x16.pcf.gz и vga_bul.pcf.gz имеют кодировку МИК (Болгария), vga_ruscii_8x16.pcf.gz имеет украинскую "досовскую"  кодировку ruscii.

Для установки шрифтов для dosemu вы должны:

  • Сделать этот шрифт доступным X-серверу -- для этого следует выполнить процедуру, описанную в разделе Настройка шрифтов X Window.
  • Прикрутить этот шрифт к 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; однако лучше воспользоваться патчем http://www.ice.ru/~vitus/misc/.

12.5 Поддержка кириллицы в программах gtk

Если gtk не находит нужных шрифтов, он режет 8-й бит. Шрифты задаются в /etc/gtk/gtkrc.$LANG. Поэтому нужно создать файл gtkrc.ru или поправить существующий. Внутри должно быть примерно следующее (названия шрифтов, размеры и прочие атрибуты можно исправить по вкусу, но эти шрифты должны содержать кириллицу в koi8-r):


style "gtk-default-ru" {
       fontset = "-cronyx-helvetica-medium-r-normal--*-*-*-*-*-*-koi8-r,\
                  -cronyx-courier-medium-r-normal--*-*-*-*-*-*-koi8-r,\
                  -cronyx-fixed-medium-r-normal--*-*-*-*-*-*-koi8-r,\
                  -cronyx-times-medium-r-normal--*-*-*-*-*-*-koi8-r"
}
class "GtkWidget" style "gtk-default-ru"

и скопировать этот файл в 'gtkrc.ru_RU.KOI8-R', или сделать symlink:

$ cd /etc/gtk/
$ ln -s  gtkrc.ru  gtkrc.ru_RU.KOI8-R

Подробности см. www.gtk.org, а также http://www.linux.org.ru/gnome/


Вперед Назад Содержание
VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...