Вопрос: Как исправить PuTTY, показывая искаженные символы?


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

enter image description here

То есть Это:

  • «Двойной ничья» выбор внутри Midnight Commander (МС).
  • Другие символы, такие как элементы линии, рисуются как неправильные символы (например, «â» вместо «|»).

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

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

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


66
2018-02-06 06:14


Источник




Ответы:


Вы почти наверняка установили неправильный набор символов в настройки 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 установлен как набор символов.

PuTTY Reconfiguration

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


66
2018-02-06 06:32



Это сделал трюк, большое спасибо, Майкл! - Uwe Keim
Во всех случаях этого недостаточно. Вы также должны экспортировать следующую переменную в свою среду: NCURSES_NO_UTF8_ACS=1  [больше информации] - Piotr Jurkiewicz
в случае locale возвращается POSIX вы, вероятно, используете usePAM в конфигурации sshd - user2693017
Если локаль возвращает что-то вроде POSIX, выпуск update-locale LANG=en_US.utf8 в командной строке - см. thomas-krenn.com/de/wiki/Locales_unter_Ubuntu_konfigurieren - koppor
@ michael-hampton, моя система настроена на использование en_US.UTF-8. Я вижу, что разные места говорят о разных местах. В некоторых местах я должен использовать en_US, в то время как в других местах упоминается, что я должен использовать de_DE. Я видел, прежде чем grep и другие основные утилиты используют locale для установки набора символов, я полагаю. Каковы последствия этого? - alpha_989


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

enter image description here


29
2018-01-19 01:57



Отлично. Легко и работает. (По крайней мере, это относится к Debian / Ubuntu.) - Nate
Это хорошо работает (на PuTTY), но затем вводит еще одну (более мелкую) проблему: изменение названия окна с дистанционным управлением больше не работает. - ADTC
Отлично. Решила проблему для ncmpc на Ubuntu Artful. - weberjn
Работает как шарм. Благодарю. - Fabian Barney


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

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


9
2017-10-24 00:58





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

UsePAM yes    

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


4
2017-10-20 16:22





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

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

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

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


4
2017-07-14 09:41





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

Бег:

mc -ac

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

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

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

locale

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

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

Я имею, например:

C
C.UTF-8
POSIX

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

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

export LANG="C.UTF-8"

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


4
2018-05-06 16:48



Каковы побочные эффекты изменения переменной LANG? Если у вас уже есть C.UTF-8 в качестве LANG, зачем экспортировать его снова? - alpha_989


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

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

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


3
2017-12-05 19:55





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

grep /etc/pam.d для события «lass»:

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 не загружен в пользовательскую среду, и у вас есть искаженные символы.


2
2018-05-20 15:04





Выполнение mc таким образом (установка языка для en) работает для меня:

$ LC_ALL=en mc

1
2018-05-05 09:27





для меня работало «Connection, Data, Terminal-type string = ansi» plus «Window, Translation, Remote character set = Use font encoding», затем set TERM=ansi на стороне unix.

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


1
2018-03-10 15:05



Вы также должны упомянуть, что вы не подключаетесь к современной системе LInux, а к более старой системе, отличной от Linux. - Michael Hampton♦