Главная > Операционные системы > Linux >
Как работать в кодировке CP866 под LINUX

Как работать в альтернативной русской кодировке (CP866) под LINUX (FAQ)

Так уж исторически сложилось, что большинство коммерческих UNIX имеют русскую кодировку ISO8859-5, а некоммерческих (в том числе и LINUX) - KOI8. В мире DOS и Windows распостранены кодировки CP866 и Windows-1251. Как быть, если возникла необходимость руссификации LINUX в альтарнивной кодировки MS/DOS (CP866)?

Как правильно руссифицировать LINUX в кодировке CP866?
Описать корректно локаль (ru_RU.CP866), пересобрать большую часть исходников LINUX с поддержкой этой локали, описать KBD с поддержкой руссификации CP866, перекодировать или создать фонты, ... Да. Видимо придется пойти более простым путем.
Как руссифицировать консоль в CP866?
Первым делом прочитать: /usr/doc/Cyrillic-HOWTO. Там описана руссифиуация в KOI8 - правильно. Теперь устанавливаем загрузку русского шрифта Cyr_a8x16 (он как ни странно в альтернативной кодировке - видимо взят из досовских руссификаторов), перекодировку экрана (mapscrn) не ставим никакую, клавиатурный драйвер загружаем ru2.map. Добавим выдачу '\033(K` на экран и все. Переключение рус/лат будет по правому <Alt>.
Как сделать переключатель рус/лат правый <Ctrl> вместо правого <Alt>?
Найти строчку в файле ru2.map:
        keycode    97 =     Control
и заменить ее на:
        keycode    97 =     AltGr_Lock
А строку:
        keycode    100 =     AltGr_Lock 
заменить на:
        keycode    100 =     AltGr 
А как сделать чтобы <Backspace> забивал символы, а не выдавал "^H"?
В файле ru2.map найти строчку:
        keycode    14 =     BackSpace BackSpace    BackSpace BackSpace
и заменить ее на
       keycode 14 =     Delete Delete     Delete Delete
Что делать, если не выводится буква "Ы" а вместо нее сточка сдвигается вправо?
Символ "Ы" имеет в альтернативной кодировке код 0x9b и неверно интерпретируется консольным драйвером. Это можно вылечить только пропатчив ядро следующим образом:
cd /usr/src/linux/drivers/char
редактировать файл console.c
запустить поиск строки на "128"
поставить комментарии Си на три строчки:
/*
    case 128+27:
        vc_state = ESsquare;
        return;
*/

снова запустить поиск на "128".
В строчках:
&& (c != 127 || disp_ctrl)
            && (c != 128+27);

поставить комментарий и точку с запятой:
&& (c != 127 || disp_ctrl);
/*           && (c != 128+27); */

больше строчки "128" в этом файле быть не должно.
Затеи пересобрать ядро и перегрузить LINUX
Данный патч проверялся на ядрах 2.0.XX и 2.2.XX
А как увидеть русские имена в файловых системах MS-DOS и Windows?
Смонтировать файловые системы с оциями:
mount -t vfat -o codepage=866,iocharset=cp866 /dev/hda1 /diskC
или записать свойства в файл /etc/fstab:
/dev/hda1 /diskC vfat defaults,codepage=866,iocharset=cp866 1 0
Чтобы увидеть русские буквы при помощи ls нужно использовать флаг ls -N
Для mc необходимо установить в опциях экрана 8-bit
А какие текстовые редакторы работают в альтернативной кодировке?
Хорошо работает с альрнативной (как и со всеми прочими) кодировкой редактор ted. Он поволяе работать без руссификации клавиатуры, имеет поддержку мыши, хороший русский хелп. Раотает в консольном и в графическом режимах, причем в графическом режиме под X11 устанавливаются собственные русские фонты.

Составил: Алексей Шихарбеев, sav@ellips.ru
Источник: www.mgul.ac.ru, 10.VIII.2002


Украинская Баннерная Сеть

Главная  Алфавитный индекс  Справка  Добавить FAQ  E-mail
Новости  Поиск по сайту

© УкрFAQ 2011
Сайт создан в системе uCoz