Господа!
Так как многим из вас явно предстоит столкнуться с некоторыми техническими
трудностями, связанными с переводом нашей сети на utf8, давайте я ещё раз
попробую объяснить ситуацию.
На сегодняшний день кодировка utf8 является общепринятым стандартом в мире
*nix. Она используется для большинства (всех?) языков.
Поддержка всех остальных кодировок давно осуществляется по остаточному
принципу. То есть - все настройки по умолчанию ориентированы на utf8,
причём эти настройки далеко выходят за рамки установки "локали по
умолчанию". Заставить работать многие вещи (например, инфраструктуру hal,
или средства работы с архивами) в кодировке, отличной от utf8, невозможно
иначе чем их правкой на уровне исходников. А последнее, как вы понимаете,
в условиях нехватки времени и часто обновляющегося софта абсолютно
нежизнеспособно.
Все современные дистрибутивы Linux при установке настраивают систему на
utf8. Весь современный софт (kde, gnome, openoffice, ...) внутри
используют utf8 ли другие представления юникода. Для того, чтобы "на
уровне интерфейса" вдруг появилась koi8-r, используется перекодирование "в
последний момент", зачастую управляемое через переменные среды вроде
G_BROKEN_FILENAMES или вручную написанный код. Всё это практически не
тестируется и постоянно глючит. Например, многие из вас могли видеть
трудности с открытием файлов с русскими именами из почтовых программ или
графических файл-менеджеров.
Со временем ситуация с поддержкой кодировок, отличных от utf8, будет только
ухудшаться.
Вывод из всего этого однозначный. Нужно переходить на использование utf8.
Это надо было сделать несколько лет назад. Koi8-r r.i.p.
Этот переход почувствуют те, кто имеет старые настроенные системы,
использовавшие koi8. Вновь установленные системы просто будут работать по
умолчанию.
Теоретически в Linux локаль является свойством отдельного процесса и
управляется семейством переменных среды LC_*, либо переменной LANG. В
принципе можно запускать разные процессы в разных локалях.
Но на практике всё обстоит хуже, например из-за перечисленных ниже
факторов.
*) Кодировка имён файлов. Процесс, запущенный в локали с кодировкой,
отличной от используемой файловой системой, не сможет нормально открывать
файлы с не-ascii именами, а файлы с не-ascii именами, записанные таким
процессом, получат нечитаемые имена.
*) Локаль терминала. Консольные программы, запущенные не в той локали,
что "охватывающий" их терминал, будут выглядеть неправильно. Особенно это
чувствуется на полноэкранных консольных программах, таких как vim или mc.
Эту проблему можно сгладить, запустив терминал в требуемой локали, либо
переключая кодировку внутри терминала (по крайней мере konsole и
gnome-terminal это умеют) - но определённое неудобство это создаёт.
*) Кодировка строк внутри программ. Правильно написанные программы должны
работать в любой локали, но слишком многие программы написаны
неправильно - например используют русские строки без gettext() или
аналогичных обёрток. Скриптов это тоже касается - писать
'cd ИсходныеТексты' неправильно.
*) Кодировка данных, обрабатываемых программой.
Всё это делает одновременное использование нескольких локалей весьма
затруднительным.
Поэтому рекомендация такая.
*) Немедленно переведите все используемые вами системы на utf8.
Для этого:
- смените системную локаль на ru_RU.UTF-8. На debian это делается командой
dpkg-reconfigure locales
- если в файловой системе присутствуют файлы с русскими именами,
переименуйте их. Для рекурсивного переименования каталога /home/user можно
использовать команду convmv -r -f koi8r -t utf8 /home/user
(программа convmv находится в пакете convmv)
После перекодировки файловой системы рекомендуется перезапустить
графический сеанс либо перегрузиться
- по мере обнаружения у себя файлов с содержимым в кодировке koi8,
перекодируйте их командой konwert koi8r-utf8 -O <имя файла>
*) Перекодировкой файлов проектов должен заниматься ответственный за
проект - если этим начнут заниматься отдельные разработчики, получится
каша
*) Если перевести проект на utf8 прямо сейчас не представляется возможным
(вероятно что таким проектом станет наш стенд полунатурного
моделирования), его работу над ним надо полностью перенести в
изолированное окружение, не связанное с внешним миром даже по файлам. Для
входа в это окружение придётся явным действием запускать терминал в
кодировке koi. Всё это будет создавать достаточный уровень неудобства,
чтобы был стимул как можно быстрее перевести проект на utf8.