[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: