Putty пишет иероглифами в виндовс
Обновлено: 07.07.2024
После перевода домашнего сервера на Linux, я хожу на него при помощи клиента Putty . Клиент простой и мощный, но у меня были сложности с настройкой русских букв в его сессии. И что характерно, инструкции в Гугле не содержат одной маленькой детали, на которую я убил кучу времени, и теперь я хочу вам это время сэкономить.
Настройка Putty для корректного отображения русских букв:
- Задаем шрифт - в дереве слева Windows -> Appearance, справа Font Settings - Change. Здесь следует задать набор символов "Кириллица". Я предпочитаю использовать более современный Consolas в системах, где он есть:
- Window -> Translation - здесь нужно указать системную кодировку сервера, к которому вы подключаетесь. Маловероятно, что остались системы с кодировкой, отличной от UTF-8, во всяком случае, мне такие уже не попадаются. Мой сервер использует как раз UTF-8, её и ставим.
- А теперь та самая важная мелочь, которая описана далеко не в каждой инструкции. Идём в Connection -> Data, и задаем в Environtment Varaibles переменную LC_ALL равной установленной локали вашего сервера. С большой долей вероятности это будет либо en_US.UTF-8, либо ru-RU.UTF-8. У меня установлены обе, но я предпочитаю иметь дело с английской локализацией, потому делаю настройки такими:
- По идее, этого должно быть достаточно, если у вас SSH сервер настроен правильно. Если же при подключении он ругается, что переменную LC_ALL установить нельзя, то в конфиге sshd_config (/etc/ssh/sshd_config в Debian):
💡Узнавайте о новых статьях быстрее. Подпишитесь на наши каналы в 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 установили их в качестве набора символов.
Вам также может понадобиться настроить параметры рисования линий, но это, вероятно, маловероятно.
Этого недостаточно во всех случаях. Вам также следует экспортировать следующую переменную в вашу среду: 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. Какой из них правильный?Также, если 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 терминала операционки. В таких случая видим такую картину:
Для лечения данной проблемы надо узнать, какая локаль используется на удаленном сервере. Для этого в терминале вводим команду – locale.
В моем случае на сервере Ubuntu используется UTF-8 (строка LANG=en_US.UTF-8).
На виндовых машинах в качетсве ssh-клиента использую программу Putty. Перед подключением нужно выставить кодировку сервера. Для этого переходим в категорию Windows –> раздел Translation и задаем параметр Remote character set. Выбираем кодировку UTF-8.
Возвращаемся в категорию Session, вводим имя сервера или ip адрес, выбираем протокол. Чтобы каждый раз не выставлять кодировку для этого сервера, сохраняем параметры. Для этого указываем имя (в моем случае pc) и жмем кнопку Save. Теперь просто из списка выбираем сохраненный сервер и подключаемся.
Для проверки ввожу команду ls, для просмотра каталога с архивом видео. Там как раз много файлов с кириллическими названиями. Если можем прочитать названия, то значит все получилось. Как в моем случае.
Нашли опечатку в тексте? Пожалуйста, выделите ее и нажмите Ctrl+Enter! Спасибо!
Мне нужно отображать символы выше в Windows 7, используя пропорциональные шрифты. Однако некоторые символы отображаются неправильно. Этот конкретный пример использует Courier New .
У меня установлен английский (США) в моих региональных настройках.
Обновить:
Конечная цель - показать в PuTTY это
Как вы видите на левой стороне есть много специальных символов.
Теперь посмотрим, что я получу с шрифтом DejaVu Mono .
Это с Courier New
Этот с Consolas
Этот с 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.
Рисунок 2: Установите кодировку:
Everson Mono работает в PuTTY (очень важное условие; многие другие шрифты работают, например, в konsole) для всех символов, которые вы разместили. Однако выполнение полного теста со скриптом Python выявляет блок, который не совсем верен.
Для использования Everson Mono в PuTTY может потребоваться установить флажок « Allow selection of variable-pitch fonts в разделе « Window -> « Appearance -> « Font settings ».
Другие шрифты, такие как DejaVu Sans Mono, отлично работают в других программах, возможно заимствуя глифы из других файлов (я не уверен, как работают шрифты TT), что, похоже, не работает в PuTTY. Code2000 должен был сработать, но он сделал что-то . странное . с моим окном PuTTY. Это может работать для вас. Каждый шрифт, который я пробовал, работает непосредственно в konsole, даже тот, который не должен. Возможно, стоит поискать альтернативный клиент / эмулятор.
Читайте также: