Лучше я расскажу все по порядку :))
У меня есть сервер базы данных под юнихом, он отдает все данные в ср866.
Под него написанна клиентская программа, по доступу. Пользователи заходят телнетом, стартуют программу и работают. Под виндой все было великолепно, использовался правда не стандартый клиент а Reflection с куячей навотротов.
И вот появилась задача перевести офис или его часть на линух. Сели смотреть
первое решение для консоли которое пришло в голову - шеллом пользователю поставить telnet servet_ip и все хорошо заработало, кроме русского ввода :)) Как то с ср-шной кодировки не хотелось вводится :)) поэтому от этого варианта отказались.
Следующий шаг по разборке с консолью закончился следующим
#setfont cp866-8x16 -m cp866
#loadkeys /lib/kbd/keymaps/i386/qwerty/ru2.map.gz
#telnet server_ip
Но во первых летела локаль, вернее русский вывод. Во вторых эта операция хорошо выполняется под рутом, но я очень сумневаюсь что она выполнится под простым юзером, а давать всем юзерам рута - не по себе становится.
Но в принципе хоть какой то результат достигнут, и мы полезли выше - а выше Иксы. Я запустил Гном-терминал, и был приятно поражен тем, что все перевелось с полпинка, не считая небольшой мелочи - нельзя было использовать функциональные клавиши(Ф1-Ф..). Фигня подумал я :)) скорее всего умные парни и КДЕ сделали свой терминал намного лучше. И правда,
запускаю я их Консоль , в параметрах соеденения нахожу вкладочку - тип терминала, меняю на линукс (как на сервере, кстате, забыл сказать на сервере термкап обработали напильником немного, так как там был еще и загадочный терминал, деталей не знаю, так как делал не я)
и полез коннектится. Да, все функциональные клавиши работают, проблема в том что вывод не перекодируется из ср866 в мою локаль ср1251.
Фигня подумал я. Счас интернет поднимем науши и какой то патчик найдем что
бы объеденить эти две удобные программы. Патчик я не нашел, но понял что все дороги ведут к xterm. Так началась очередная глава.
Перерыв man на xterm я нашел три опции которые по идее должны меня спасти
-en - которая указывает путь к файлу перекодировки, но эта опция устарела и надо пользоваться
-lc - которая включает luit для автоматической перекодировки
и еще меня крепко заинтересовала опция
-fn в которой надо указать имя используемого фонта
Этап половых извращений с xtermом я описыватьт не хочу, так как всего не помню, но в какой то момент я запостил свой вопрос на форум. Вы абсолютно верно сказали мне, что дело в luit, скорее даже не в нем самом, покай не мере у меня, а в отсутствии на моей машине локали cp866. Ведь luit используется для перекодировки на лету между локалями. На этом этапе благодаря ващей подсказке я полностью перерыт ман на localedef и сделал свою ср 866 локаль. В консоли все стало просто великолепно ( не считая того что не работает бекспейс и буква "ы", но я где то в нете видел доку по тому как это обработать напильником, правда сейчас не могу найти адрес).
Довольный и предвкушающий я запустил иксы и ломанулся в гном-терминал. Он транслировал все без дополнительных пинков, но функциональные клавиши не работали все также. Ну сейчас парни из КДЕ покажут почему КДЕ рулит, подумалось мне, когда я запускал Консоль. Действительно, проблем с кодировкой не было, но появилась проблема с функциональными клавишами, я кинулся исправлять по проверенному мною пути - меняя тип терминала, но ничего не произошло. Я решил проверить что скажет xterm
# xterm
Warning: locale not supported by Xlib, locale set to C
это на патченном луите
[root@it_troll /]# xterm
Warning: could not find charset for ru_RU.ibm866; using ISO 8859-1
а это на непатченном
Соответственно он не перекодирует
Единственный вывод, который я могу сделать - надо точно так же как и локаль (LOCALE) самому собирать XLOCALE для ср866. Тогда все должно заработать.
На этом этапе я и заткнулся