Часто бывает что при заходе на сервер через Putty встречаешь «аброкадабру» вместо букв в Midnight Commander (MC) или неверное отображение псевдографики (линии отображаются qqqqqqqqqqq…) Обычно это решается выставлением правильной кодировки в настройках Putty:
Window -> Translation -> Remote character set
Устанавливаем ту же кодировку что и на удаленном сервере. Обычно это UTF-8
Чтобы узнать какая кодировка используется на сервере вводим ssh команду:
locale
В ответ сервер выдает что-то типа:
LANG=ru_RU.UTF-8
LC_CTYPE=»ru_RU.UTF-8″
LC_NUMERIC=»ru_RU.UTF-8″
LC_TIME=»ru_RU.UTF-8″
LC_COLLATE=»ru_RU.UTF-8″
LC_MONETARY=»ru_RU.UTF-8″
LC_MESSAGES=»ru_RU.UTF-8″
LC_PAPER=»ru_RU.UTF-8″
LC_NAME=»ru_RU.UTF-8″
LC_ADDRESS=»ru_RU.UTF-8″
LC_TELEPHONE=»ru_RU.UTF-8″
LC_MEASUREMENT=»ru_RU.UTF-8″
LC_IDENTIFICATION=»ru_RU.UTF-8″
LC_ALL=
Это значит что кодировка используемая в консоли ru_RU.UTF-8. Выставляем в Putty UTF-8 и все должно заработать нормально.
Однако бывает что в ответ на команду locale сервер выдает:
LC_CTYPE=»POSIX»
LC_NUMERIC=»POSIX»
LC_TIME=»POSIX»
LC_COLLATE=»POSIX»
LC_MONETARY=»POSIX»
LC_MESSAGES=»POSIX»
LC_PAPER=»POSIX»
LC_NAME=»POSIX»
LC_ADDRESS=»POSIX»
LC_TELEPHONE=»POSIX»
LC_MEASUREMENT=»POSIX»
LC_IDENTIFICATION=»POSIX»
LC_ALL=
Это значит что локаль на сервере не настроена.
Чтобы посмотреть предустановленые локали:
locale -a | grep ru
Сервер выдаст что-то типа:
ru_RU
ru_RU.iso88595
ru_RU.koi8r
ru_RU.utf8
Видим что необходимая локаль есть ru_RU.utf8
Чтобы настроить использование ее в консоли создаем файл /etc/sysconfig/i18n командой:
touch /etc/sysconfig/i18n
После чего в файл пишем следующие строки:
LANG=»ru_RU.UTF-8″
SUPPORTED=»ru_RU.UTF-8:ru_RU:ru»
SYSFONT=»latarcyrheb-sun16″
Сохраняем файл и выходим из консоли. Заходим снова. И наблюдаем что всее символы отображаются корректно.
Если при использовании команды
locale -a | grep ru
в списке нет необходимой локали. То нужно ее установить командой:
localedef -i ru_RU -f UTF-8 ru_RU.UTF-8
Эта команда извлечет из папки /usr/share/i18n/charmaps файл UTF-8.gz (символьная карта для юникода) и сгенерирует нужный нам файл ru_RU.UTF-8