Re: Кодировка mutt и kde.
Eugen Wissner -> debian-russian@lists.debian.org @ Sat, 11 Jun 2005 19:38:29 +0600:
EW> Здравствуйте.
EW> Имею проблемы с локализацией Debian woody (rev5).
EW> Прописал в ~/.bash_profile (туда хоть написал куда надо?) следующие строчки:
EW> export LC_CTYPE=ru_RU
EW> export LANG=ru_RU.KOI8-R
EW> export LC_ALL=ru_RU.KOI8-R
Для начала - LC_CTYPE надо ru_RU.KOI8-R. Для потом - вообще первая и
третья строчки лишние.
EW> После этого жить стало намного легче. Но остались некоторые
EW> недоразумения. Во-первых mutt (запускаю с консоли) так и
EW> отказывается отображать koi8-r. Уже рылся по всяким статьям
EW> пробовал настройки на угад... без толку. Наверняка, что-то не то
EW> делаю, или сделал. Может кто-то конкретные настройки пояснит.
Для потом - а кто-нибудь другой-то у тебя в консоли (НЕ ПУТАТЬ С
konsole!) русский показывает? Кириллические шрифты установлены?
Настроены на koi8-r? mutt его нормально отображает, если он знает,
какая кодировка у тебя на терминале (я не помню, умеет ли он ее из
локали брать, но был параметр конфига) И кодировка правильно указана в
письме (чтобы знать, откуда перекодировать).
EW> Во-вторых, запускается у меня KDE, пускаю я konsole,
... который сам по себе не bash, и потому не читает .bash_profile
EW> набираю locale
... а bash, запущенный в нем, не логинный, и тоже не читает .bash_profile
EW> и везде вместо "ru_RU.KOI8-R" пишется стандартный "POSIX". При чем
EW> возьмем в пример игрушку Джезбол, она вместо русского шрифта
EW> показывает "????????", а если запустить ее с konsole,
EW> предварительно присвоив переменным LC_ALL и LANG значение
EW> ru_RU.KOI8-R, то со шрифтами становится все в порядке. Поясните,
EW> пожалуйста, в чем тут проблема с иксами, kde..., а то я
EW> новенький..., тяжко.
У тебя проблема не с иксами, а с пониманием, как устроена локализация.
Так вот. Локаль - свойство процесса, а не системы. Поэтому она может
быть разная у разных процессов. В норме она отвечает за выбор
программой сообщений, понятие буквы и т.п. У некоторых (гуевых, которые
сами разбираются с кодировкой шрифтов) - еще и за выбор шрифтов. Они
для этого обычно используют категорию LC_CTYPE. У консольных
возможности выбора шрифтов нет, используют тот, какой дали (в консоли -
загрузили в знакогенератор, в эмуляторе терминала в иксах - с каким
запущен эмулятор терминала). Некоторые гуевые (xterm, например) тоже не
проявляют интеллекта и используют какой дали. Им надо давать шрифт в
нужной кодировке. В иксах локаль (тоже LC_CTYPE) отвечает еще и за
интерпретацию нажатий на клавиши Xlib'ом. А именно - за перекодировку в
символ соответствующей кодировки. Так что даже в правильно локализованную
консольную программу, запущенную в xterm или konsole, который в свою
очередь запущен в локали POSIX (в твоем случае с неправильно
расположенными переменными так и произойдет), ты не сможешь ввести
русские буквы. Как тебе уже заметили, локаль нужно писать в
/etc/environment (умолчательную для всех пользователей системы) либо в
стартапный файл своей конфигурации (для себя лично). Раньше, помнится,
системный Xsession подхватывал ~/.environment. Там еще будет
особенность с тем, что оный /etc/environment читался раньше (и может
быть, читается сейчас) кем-то типа pam_env, кто не переваривает там
слова export. В результате прочитанные оттуда переменные не
экспортировались. Я помню, с этим когда-то давно были проблемы, у меня
в .xsession еще следы от этого остались.
--
Artem Chuprina
RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru
Нужны две программы - одна с интерфейсом, а другая чтобы работу делала.
Victor Wagner в <aut24i$gct$1@wagner.wagner.home>
Reply to: