Como corrigir PuTTY mostrando caracteres ilegíveis?


77

Conectando-me de um PC com Windows 7 via SSH a um servidor Ubuntu usando PuTTY , recebo alguns erros de tela:

insira a descrição da imagem aqui

Ou seja:

  • "Desenha duas vezes" a seleção dentro do Midnight Commander (MC).
  • Outros caracteres, como elementos de linha, são desenhados como caracteres incorretos (por exemplo, "â" em vez de "|").

Liguei-me ao mesmo servidor Ubuntu com um terminal e SHH a partir de um Mac OS X e não recebo essas informações ilegíveis (ou seja, tudo parece e funciona corretamente). Eu já tentei brincar com as configurações de fonte do PuTTY, alterando-o de Courier New para Consolas, mas sem sorte.

Minha pergunta, portanto, é:

Como configurar o PuTTY para exibir corretamente caracteres especiais e não desenhar / sobrescrever duas linhas de tela?


1
Com o SecureCRT: Selecione Opções -> Opções da sessão -> Terminal -> Aparência -> Codificação de caracteres -> selecione: UTF-8. Espero ajudar outros como eu!
Vunb 03/09

Respostas:


72

Você quase certamente definiu o caractere errado nas configurações do PuTTY .

Verifique o conjunto de caracteres no sistema remoto executando o comando:

locale

Isso deve retornar algo como:

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=

Portanto, verifique as configurações do PuTTY em Tradução e verifique se você UTF-8definiu como o conjunto de caracteres.

Reconfiguração do PuTTY

Você também pode precisar ajustar a configuração do desenho de linha, mas provavelmente não é provável.


14
Isso não é suficiente em todos os casos. Você também deve exportar a seguinte variável para o seu ambiente: NCURSES_NO_UTF8_ACS=1 [mais informações ]
Piotr Jurkiewicz

2
no caso localeretorna POSIXvocê provavelmente já UsePAM desativado no sshd configuração
user2693017

4
Se o código do idioma retornar algo como POSIX, emitir update-locale LANG=en_US.utf8na linha de comando - consulte thomas-krenn.com/de/wiki/Locales_unter_Ubuntu_konfigurieren
koppor

@ michael-hampton, meu sistema está configurado para usar en_US.UTF-8. Vejo que lugares diferentes dizem coisas diferentes sobre a localidade. Alguns lugares mencionam que eu deveria usar en_US, enquanto outros lugares mencionam que eu deveria usar de_DE. Eu vi antes que o grep e outros utilitários principais usassem o código do idioma para definir o conjunto de caracteres, acredito. Quais são as implicações de mudar isso?
Alpha_989 11/11

@koppor, você mencionou sobre a alteração da localidade para en_US, enquanto Michael mencionou a alteração da localidade para de_DE. Qual deles está correto?
alpha_989

34

Eu tive um problema com o aptitudeprograma Debian, apesar de ter UTF-8 como meu conjunto de caracteres. O que funcionou para mim foi definir o 'Connection> Data>' Terminal-type string 'como' putty 'em vez de' xterm '- aparentemente Putty ignora a sequência de caracteres para alternar para o modo de desenho: http: //www.chiark.greenend .org.uk / ~ sgtatham / putty / wishlist / utf8-plus-vt100.html

insira a descrição da imagem aqui


2
Excelente. Fácil e funciona. (Pelo menos ele faz no Debian / Ubuntu.)
Nate

1
Isso funciona bem (no PuTTY), mas apresenta outro problema (mais pequeno): a alteração do título da janela com controle remoto não funciona mais.
ADTC

Excelente. Resolvido o problema do ncmpc no Ubuntu Artful.
Weberjn


8

Os dois fatores básicos são o Window / Translation UTF-8 nas configurações de massa e de localidade no Linux, conforme instruído aqui e em muitos outros lugares.

Além disso, pode ajudar no putty definir a string do tipo Conexão / Dados / Terminal como putty e / ou no Linux como export NCURSES_NO_UTF8_ACS=1. Esses dois também são mencionados em vários lugares.

Mas: você ainda pode receber blocos para determinados caracteres, porque as fontes padrão, como Courier e Lucida Console, não possuem todos os caracteres Unicode. Faça o download e instale http://dejavu-fonts.org/wiki/Download e defina o putty para usá-lo.

Esse último truque foi necessário para eu conseguir noping(recomendado!) Mostrar todos os caracteres gráficos.


2
export NCURSES_NO_UTF8_ACS=1funcionou melhor para mim. Só preciso lembrar de usar a -Eopção sudoquando corro iftoppara manter a configuração do ambiente. sudo -E iftop
precisa saber é o seguinte

5

No meu caso (Ubuntu 14.04), o problema foi causado por falta de

UsePAM yes    

A entrada em / etc / ssh / sshd_config como /etc/pam.d/sshd pam é responsável por carregar o arquivo / etc / default / locale no ambiente dos usuários.


Isso consertou para mim.
Martin

5

Para todos vocês, velhos pobres VMS que acabam aqui:

PuTTY → Janela → Tradução → Conjunto de caracteres remoto → DEC-MCS

trabalhou para mim.


4

Eu estava procurando muitas soluções para isso ao usar a máquina Docker (local e em máquinas configuradas pelo administrador do sistema). No meu Putty estava tudo bem (eu tinha UTF-8), eu também estava usando outro cliente SSH e tinha exatamente o mesmo problema.

Corrida:

mc -ac

estava resolvendo o problema (mas não completamente) e eu estava procurando uma solução completa.

Depois de ler muitas sugestões, finalmente encontrei a que resolveu meu problema.

No terminal quando você executa:

locale

verifique qual localidade você definiu. Eu tinha por Clocalidade padrão .

Para verificar todas as localidades instaladas, execute locale -a

Eu tenho por exemplo:

C
C.UTF-8
POSIX

por padrão.

A solução está exportando LANGvariável com C.UTF-8código de idioma da seguinte forma:

export LANG="C.UTF-8"

Obviamente, você pode adicioná-lo .bashrcpara que ele seja definido automaticamente em seu perfil.


Quais são os efeitos colaterais da alteração da variável LANG? Se você já tinha o C.UTF-8 como LANG, por que exportá-lo novamente?
alpha_989

2

Outro motivo relacionado ao pam, que pode afetar os hosts com autenticação powerbroker / pbis / da mesma forma.

grep /etc/pam.d para a ocorrência "lsass":

grep -r lsass /etc/pam.d

se você vir na saída algo como:

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

então provavelmente é a causa raiz do problema. A solução rápida é substituir "suficiente" por "opcional" ao lado do módulo pam_lsass para que se pareça com:

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

O /etc/pam.d/common-session (ou outro arquivo com entrada semelhante - pode haver alguns deles) provavelmente está incluído no /etc/pam.d/sshd antes do pam_env ser carregado, portanto, se o processamento dos módulos pam for concluído Antes de pam_env, o / etc / default / locale não é carregado no ambiente do usuário e você possui caracteres ilegíveis.


2

Depois de 15 anos, fiquei irritado mais uma vez e pesquisei novamente, encontrei isso, escolhi

alterar configurações → janela → tradução → conjunto de caracteres remoto → "usar codificação de fonte"

e isso consertou.


2

Eu tive que definir, na página JanelaTradução , o caractere definido para:

ISO-8859-1: 1998 (Latin-1, Europa Ocidental)

Então, e somente então, os caracteres de linha alinhada apareceram corretamente.


1

A execução do mc dessa maneira (defina o código do idioma para en) funciona para mim:

$ LC_ALL=en mc

1

o que funcionou para mim foi "Conexão, dados, cadeia de caracteres do tipo terminal = ansi" plus "Janela, tradução, conjunto de caracteres remoto = Usar codificação de fonte" e set TERM=ansino lado unix.

PS. Lembre-se de desativar as aspas inteligentes se for forçado a usar o MS-Word.


1
Você também deve mencionar que não está se conectando a um sistema LInux moderno, mas a um sistema não-Linux mais antigo.
Michael Hampton

1

Meu problema foi que a massa está configurada como UTF-8, mas o sistema remoto é um ISO-8859-1

Europa Ocidental, então eu mudei isso na massa e tudo funcionou bem.

Captura de tela do Putty

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.