Putty пишет иероглифами в виндовс

Обновлено: 07.07.2024

После перевода домашнего сервера на Linux, я хожу на него при помощи клиента Putty . Клиент простой и мощный, но у меня были сложности с настройкой русских букв в его сессии. И что характерно, инструкции в Гугле не содержат одной маленькой детали, на которую я убил кучу времени, и теперь я хочу вам это время сэкономить.

Настройка Putty для корректного отображения русских букв:

  1. Задаем шрифт - в дереве слева Windows -> Appearance, справа Font Settings - Change. Здесь следует задать набор символов "Кириллица". Я предпочитаю использовать более современный Consolas в системах, где он есть:
  2. Window -> Translation - здесь нужно указать системную кодировку сервера, к которому вы подключаетесь. Маловероятно, что остались системы с кодировкой, отличной от UTF-8, во всяком случае, мне такие уже не попадаются. Мой сервер использует как раз UTF-8, её и ставим.
  3. А теперь та самая важная мелочь, которая описана далеко не в каждой инструкции. Идём в Connection -> Data, и задаем в Environtment Varaibles переменную LC_ALL равной установленной локали вашего сервера. С большой долей вероятности это будет либо en_US.UTF-8, либо ru-RU.UTF-8. У меня установлены обе, но я предпочитаю иметь дело с английской локализацией, потому делаю настройки такими:
  4. По идее, этого должно быть достаточно, если у вас SSH сервер настроен правильно. Если же при подключении он ругается, что переменную LC_ALL установить нельзя, то в конфиге sshd_config (/etc/ssh/sshd_config в Debian):

lang

💡Узнавайте о новых статьях быстрее. Подпишитесь на наши каналы в Telegram и Twitter.

Судя по тому, что вы читаете этот текст, вы дочитали эту статью до конца. Если она вам понравилась, поделитесь, пожалуйста, с помощью кнопок ниже. Спасибо за вашу поддержку!

Вы здесь: Главная страница » Linux » Русские буквы в SSH и Putty (146% рабочий способ)

Автор: Сергей Ткаченко

Сергей Ткаченко создал этот сайт в далёком 2009 году, и с тех пор продолжает над ним работать, публикуя новые материалы о Windows и её приложениях практически каждый день. Посмотреть все записи автора Сергей Ткаченко

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

введите описание изображения здесь

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

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

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

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

С SecureCRT: выберите Параметры -> Параметры сеанса -> Терминал -> Внешний вид -> Кодировка символов -> выберите: UTF-8. Надеюсь помочь другим, как я!

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

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

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

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

PuTTY Реконфигурация

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

Этого недостаточно во всех случаях. Вам также следует экспортировать следующую переменную в вашу среду: NCURSES_NO_UTF8_ACS=1 [подробнее ] в случае locale возвратов у POSIX вас, вероятно, отключен usePAM в конфигурации sshd @ michael-hampton, моя система настроена на использование en_US.UTF-8. Я вижу, что разные места говорят разные вещи о локали. В некоторых местах упоминается, что я должен использовать en_US, в то время как в других местах упоминается, что я должен использовать de_DE. Я видел, как grep и другие основные утилиты использовали локаль для установки набора символов, я полагаю. Каковы последствия изменения этого? @koppor, вы упомянули об изменении локали на en_US, а Майкл упомянул об изменении локали на de_DE. Какой из них правильный?

введите описание изображения здесь

Отлично. Легко и все работает. (По крайней мере, так оно и есть в Debian / Ubuntu.) Это хорошо работает (в PuTTY), но затем возникает другая (более незначительная) проблема: изменение заголовка окна с дистанционным управлением больше не работает.

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

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

Кроме того, это может помочь в putty для установки строки Connection / Data / Terminal-type в putty , и / или в Linux в export NCURSES_NO_UTF8_ACS=1 . Эти два также упоминаются в нескольких местах.

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

export NCURSES_NO_UTF8_ACS=1 работал лучше всего для меня. Мне просто нужно помнить, чтобы использовать эту -E опцию sudo при запуске, iftop чтобы сохранить настройки среды. sudo -E iftop

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Кракозябры в Putty при подключении к Ubuntu по ssh

Часто при подключении к серверам по SSH из под Windows вместо кириллических символов отображаются кракозябры. Происходит это из-за несовпадения кодировок Putty и Ubuntu, точнее виртуального SSH терминала операционки. В таких случая видим такую картину:

ubuntu putty character 1 thumb Кракозябры в Putty при подключении к Ubuntu по ssh

Для лечения данной проблемы надо узнать, какая локаль используется на удаленном сервере. Для этого в терминале вводим команду – locale.

ubuntu putty character 2 thumb Кракозябры в Putty при подключении к Ubuntu по ssh

В моем случае на сервере Ubuntu используется UTF-8 (строка LANG=en_US.UTF-8).

На виндовых машинах в качетсве ssh-клиента использую программу Putty. Перед подключением нужно выставить кодировку сервера. Для этого переходим в категорию Windows –> раздел Translation и задаем параметр Remote character set. Выбираем кодировку UTF-8.

ubuntu putty character 3 thumb Кракозябры в Putty при подключении к Ubuntu по ssh

Возвращаемся в категорию Session, вводим имя сервера или ip адрес, выбираем протокол. Чтобы каждый раз не выставлять кодировку для этого сервера, сохраняем параметры. Для этого указываем имя (в моем случае pc) и жмем кнопку Save. Теперь просто из списка выбираем сохраненный сервер и подключаемся.

ubuntu putty character 5 thumb Кракозябры в Putty при подключении к Ubuntu по ssh

Для проверки ввожу команду ls, для просмотра каталога с архивом видео. Там как раз много файлов с кириллическими названиями. Если можем прочитать названия, то значит все получилось. Как в моем случае.

ubuntu putty character 4 thumb Кракозябры в Putty при подключении к Ubuntu по ssh

Нашли опечатку в тексте? Пожалуйста, выделите ее и нажмите Ctrl+Enter! Спасибо!

Мне нужно отображать символы выше в Windows 7, используя пропорциональные шрифты. Однако некоторые символы отображаются неправильно. Этот конкретный пример использует Courier New .

черт!

У меня установлен английский (США) в моих региональных настройках.

Обновить:

Конечная цель - показать в PuTTY это


Как вы видите на левой стороне есть много специальных символов.

Теперь посмотрим, что я получу с шрифтом DejaVu Mono .

ДежаВу Моно

Это с Courier New

Новый Курьер

Этот с Consolas

Consolas

Этот с Inconsolata

Inconsolata

Это тестовый вывод с DejaVu Sans Mono .


Нажмите здесь, чтобы увеличить

Теперь сравните с тем скриншотом прямо под Update

4 ответа 4

Что вам нужно сделать, это установить шрифт (рисунок 1) и кодировку (рисунок 2) в PuTTY.

Шрифт на скриншоте - Inconsolata (получите файл OTF и скопируйте его в папку «Шрифты Windows»). (PyroScope предлагает DejaVu Sans Mono для Windows. Получите dejavu-fonts-ttf-2.33.zip , распакуйте четыре DejaVuSansMono*.ttf и скопируйте их в папку шрифтов Windows.)

Кодировка для использования - UTF-8.

Для шрифта PuTTY установлено значение Deja Vu Sans Mono

Рисунок 2: Установите кодировку:

Кодировка PuTTY установлена в UTF-8

Everson Mono работает в PuTTY (очень важное условие; многие другие шрифты работают, например, в konsole) для всех символов, которые вы разместили. Однако выполнение полного теста со скриптом Python выявляет блок, который не совсем верен.

Everson Mono от PuTTY до виртуальной машины Kubuntu

Для использования Everson Mono в PuTTY может потребоваться установить флажок « Allow selection of variable-pitch fonts в разделе « Window -> « Appearance -> « Font settings ».

Другие шрифты, такие как DejaVu Sans Mono, отлично работают в других программах, возможно заимствуя глифы из других файлов (я не уверен, как работают шрифты TT), что, похоже, не работает в PuTTY. Code2000 должен был сработать, но он сделал что-то . странное . с моим окном PuTTY. Это может работать для вас. Каждый шрифт, который я пробовал, работает непосредственно в konsole, даже тот, который не должен. Возможно, стоит поискать альтернативный клиент / эмулятор.

Читайте также: