Назад | Перейти на главную страницу

Как исправить PuTTY, отображающий искаженные символы?

Подключение с ПК с Windows 7 через SSH к серверу Ubuntu с помощью PuTTY, Я получаю несколько ошибок на экране:

Т.е. Это:

Я подключился к тому же серверу Ubuntu с терминалом и SHH из Mac OS X и не получаю искажений экрана (т.е. все выглядит и работает правильно). Я уже пытался поиграть с настройками шрифта внутри PuTTY, изменив его с Courier New на Consolas, но безуспешно.

Поэтому мой вопрос:

Как настроить PuTTY для правильного отображения специальных символов, а не двойного рисования / перезаписи строк экрана?

Вы почти наверняка установили неправильный набор символов в ваши настройки PuTTY.

Проверьте набор символов в удаленной системе, выполнив команду:

locale

Это должно вернуть что-то вроде:

LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=

Поэтому проверьте настройки PuTTY в Перевод и убедитесь, что у вас есть UTF-8 установить как набор символов.

Возможно, вам также придется изменить настройку рисования линий, но, вероятно, это маловероятно.

У меня возникла проблема с Debian aptitude программа, хотя в качестве набора символов у меня был UTF-8. Что сработало для меня, так это установить для 'Connection> Data>' Terminal-type string 'значение' putty 'вместо' xterm '- очевидно, Putty игнорирует последовательность символов для переключения в режим рисования: http://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/utf8-plus-vt100.html

Кроме того, если UTF-8 настроен неправильно, вы можете запустить его как mc -ac.

Кредиты: http://blog.acsystem.sk/linux/midnight-commander-utf8-line-drawing-characters-problem

Двумя основными факторами являются Window / Translation UTF-8 в параметрах замазки и локали в Linux, как указано здесь и во многих других местах.

Кроме того, может помочь шпатлевка для схватывания Подключение / Данные / Тип терминала строка к замазка, и / или в Linux для export NCURSES_NO_UTF8_ACS=1. Эти двое также упоминаются в нескольких местах.

Но: вы все равно можете получать блоки для определенных символов, потому что шрифты по умолчанию, такие как Courier и Lucida Console, не содержат всех символов Unicode. Загрузить и установить http://dejavu-fonts.org/wiki/Download, и установите шпатлевку для ее использования.

Этот последний трюк был нужен мне, чтобы получить noping (рекомендуется!) отображать все графические символы.

Для всех вас, бедных старых парней из VMS, которые оказались здесь:

PuTTY → Окно → Перевод → Удаленный набор символов → DEC-MCS

работал у меня.

Через 15 лет я снова разозлился и снова погуглил, нашел это, выбрал

изменить настройки → окно → перевод → удаленный набор символов → «использовать кодировку шрифта»

и это исправило это.

В моем случае (Ubuntu 14.04) проблема была вызвана отсутствием

UsePAM yes    

запись в / etc / ssh / sshd_config, поскольку /etc/pam.d/sshd конфигурация pam по умолчанию отвечает за загрузку / etc / default / locale в среду пользователя.

Я искал много решений для этого при использовании машины Docker (как локали, так и на машинах, настроенных системным администратором). В моей Putty все было хорошо (у меня было UTF-8), Я использовал также другой клиент SSH и имел точно такую ​​же проблему.

Бег:

mc -ac

решал проблему (но не полностью) и искал полное решение.

Прочитав множество предложений, я наконец нашел тот, который решил мою проблему.

В терминале при запуске:

locale

проверьте, какой языковой стандарт вы установили. У меня по умолчанию C локаль.

Чтобы проверить все установленные локали, запустите locale -a

У меня например:

C
C.UTF-8
POSIX

по умолчанию.

Решение экспортирует LANG переменная с C.UTF-8 локаль вот так:

export LANG="C.UTF-8"

Очевидно, вы можете добавить это в .bashrc чтобы он автоматически устанавливался в вашем профиле.

Окно → Перевод → «Включить рисование линий VT100 даже в режиме UTF-8».

Это исправляет отображение обоих mc и wavemon для меня.

Я должен был установить на ОкноПеревод страница, набор символов:

ISO-8859-1: 1998 (Latin-1, Западная Европа)

Тогда и только тогда символы штриховки отображались правильно.

Другая причина, так или иначе связанная с pam, может повлиять на хосты с аутентификацией powerbroker / pbis / аналогично.

grep /etc/pam.d для возникновения "lsass":

grep -r lsass /etc/pam.d

если вы видите в выводе что-то вроде:

/etc/pam.d/common-session:session       sufficient        pam_lsass.so

тогда это, вероятно, основная причина проблемы. Быстрое исправление - заменить «достаточно» на «необязательный» рядом с модулем pam_lsass, чтобы он выглядел так:

/etc/pam.d/common-session:session       optional        pam_lsass.so

/etc/pam.d/common-session (или другой файл с аналогичной записью - их может быть немного), вероятно, включен /etc/pam.d/sshd до загрузки pam_env, поэтому, если обработка модулей pam завершена до того, как дело дойдет до pam_env, / etc / default / locale не загружается в пользовательское окружение, и у вас есть искаженные символы.

Как упоминалось во многих ответах:

Шпатлевка> Окно> Перевод> Удаленный набор символов> UTF8

это решение.

Но тогда не забудьте пойти в Сессия> Настройки по умолчанию и ударил Сохранить. Никакое сообщение не будет отображаться, чтобы подтвердить успех, но оно действительно станет значением по умолчанию:

У меня работает mc (установите locale на en):

$ LC_ALL=en mc

то, что сработало для меня, было «Соединение, Данные, Строка типа терминала = ansi» плюс «Окно, Перевод, Удаленный набор символов = Использовать кодировку шрифта», затем set TERM=ansi на стороне unix.

PS. Не забудьте выключить умные кавычки, если вы вынуждены использовать MS-Word.

Моя проблема заключалась в том, что шпатлевка настроена как UTF-8, но удаленная система - это ISO-8859-1.

Западная Европа, поэтому я заменил его на шпатлевку, и все работало нормально.

Скриншот шпатлевки