¿Cómo arreglar PuTTY mostrando personajes confusos?

77

Al conectarme desde una PC con Windows 7 a través de SSH a un servidor Ubuntu usando PuTTY , obtengo algunos errores de pantalla:

ingrese la descripción de la imagen aquí

Es decir:

  • "Dibuja dos veces" la selección dentro de Midnight Commander (MC).
  • Otros caracteres como elementos de línea se dibujan como caracteres incorrectos (por ejemplo, "â" en lugar de "|").

Me conecté al mismo servidor Ubuntu con un terminal y SHH desde un Mac OS X y no obtengo estas incómodas pantallas (es decir, todo se ve y funciona correctamente). Ya he intentado jugar con la configuración de fuente dentro de PuTTY, cambiándola de Courier New a Consolas pero sin suerte.

Mi pregunta por lo tanto es:

¿Cómo configurar PuTTY para mostrar correctamente caracteres especiales y no líneas de pantalla de doble dibujo / sobrescritura?

Uwe Keim
fuente
1
Con SecureCRT: Seleccione Opciones -> Opciones de sesión -> Terminal -> Apariencia -> Codificación de caracteres -> seleccione: UTF-8. ¡Espero ayudar a otros como yo!
Vunb

Respuestas:

72

Es casi seguro que ha configurado el juego de caracteres incorrecto en su configuración de PuTTY .

Verifique el juego de caracteres en el sistema remoto ejecutando el comando:

locale

Esto debería devolver 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=

Por lo tanto, verifique la configuración de PuTTY en Traducción y asegúrese de haber UTF-8establecido el conjunto de caracteres.

Reconfiguración PuTTY

Es posible que también necesite ajustar la configuración del dibujo lineal, pero probablemente no sea probable.

Michael Hampton
fuente
14
Esto no es suficiente en todos los casos. También debe exportar la siguiente variable a su entorno: NCURSES_NO_UTF8_ACS=1 [más información ]
Piotr Jurkiewicz
2
en caso de localedevoluciones POSIX, probablemente tenga usePAM deshabilitado en la configuración sshd
user2693017
44
Si la configuración regional devuelve algo como POSIX, emita update-locale LANG=en_US.utf8en la línea de comando - vea thomas-krenn.com/de/wiki/Locales_unter_Ubuntu_konfigurieren
koppor
@ michael-hampton, mi sistema está configurado para usar en_US.UTF-8. Veo que diferentes lugares dicen cosas diferentes sobre la configuración regional. Algunos lugares mencionan que debería usar en_US mientras que otros lugares mencionan que debería usar de_DE. Creo que vi antes de que grep y otras utilidades principales usaran la configuración regional para establecer el conjunto de caracteres. ¿Cuáles son las implicaciones de cambiar esto?
alpha_989
@koppor, mencionaste sobre cambiar la configuración regional a en_US, mientras que michael mencionó cambiar la configuración regional a de_DE. ¿Cuál es el correcto?
alpha_989
34

Tuve un problema con el aptitudeprograma de Debian a pesar de que tenía UTF-8 como mis personajes establecidos. Lo que funcionó para mí fue establecer 'Conexión> Datos>' Cadena de tipo terminal 'en' masilla 'en lugar de' xterm '- aparentemente Putty ignora la secuencia de caracteres para cambiar al modo de dibujo: http: //www.chiark.greenend .org.uk / ~ sgtatham / putty / wishlist / utf8-plus-vt100.html

ingrese la descripción de la imagen aquí

Daniel Sokolowski
fuente
2
Excelente. Fácil y funciona. (Al menos lo hace en Debian / Ubuntu.)
Nate
1
Esto funciona bien (en PuTTY) pero luego introduce otro problema (más pequeño): el cambio de título de la ventana a control remoto ya no funciona.
ADTC
Excelente. Resuelto el problema para ncmpc en Ubuntu Artful.
weberjn
8

Los dos factores básicos son Window / Translation UTF-8 en la configuración de masilla y configuración regional en Linux, como se indica aquí y en muchos otros lugares.

Además, puede ayudar en masilla establecer una cadena de tipo Conexión / Datos / Terminal en masilla , y / o en Linux en export NCURSES_NO_UTF8_ACS=1. Estos dos también se mencionan en múltiples lugares.

Pero: aún puede obtener bloques para ciertos caracteres porque las fuentes predeterminadas como Courier y Lucida Console no tienen todos los caracteres Unicode. Descargue e instale http://dejavu-fonts.org/wiki/Download y configure Putty para usarlo.

Este último truco fue necesario para mí noping(¡recomendado!) Para mostrar todos los personajes gráficos.

GauteLund
fuente
2
export NCURSES_NO_UTF8_ACS=1funcionó mejor para mí Solo necesito recordar usar la -Eopción sudocuando corro iftoppara mantener esa configuración de entorno. sudo -E iftop
HeatfanJohn
5

En mi caso (Ubuntu 14.04) el problema fue causado por falta

UsePAM yes    

La entrada en / etc / ssh / sshd_config como /etc/pam.d/sshd pam configuration es responsable de forma predeterminada de cargar / etc / default / locale en el entorno de los usuarios.

fakej Gazeta.pl
fuente
Esto me lo arregló.
Martin
5

Para todos los pobres muchachos de VMS que terminan aquí:

PuTTY → Ventana → Traducción → Juego de caracteres remoto → DEC-MCS

trabajó para mi.

David Rabahy
fuente
4

Estaba buscando muchas soluciones para esto cuando usaba la máquina Docker (tanto local como en máquinas configuradas por el administrador del sistema). En mi Putty todo estaba bien (lo tenía UTF-8), estaba usando también otro cliente SSH y tenía exactamente el mismo problema.

Corriendo:

mc -ac

estaba resolviendo el problema (pero no completamente) y estaba buscando una solución completa.

Después de leer muchas sugerencias, finalmente encontré la que resolvió mi problema.

En la terminal cuando corres:

locale

verifique qué configuración regional ha establecido. Tenía por defecto la Cconfiguración regional.

Para verificar todo el entorno local instalado, ejecute locale -a

Tengo por ejemplo:

C
C.UTF-8
POSIX

por defecto.

La solución es exportar LANGvariables con C.UTF-8configuración regional de esta manera:

export LANG="C.UTF-8"

Obviamente, puede agregarlo .bashrcpara configurarlo automáticamente en su perfil.

Marcin Nabiałek
fuente
¿Cuáles son los efectos secundarios de cambiar la variable LANG? Si ya tenía C.UTF-8 como LANG, ¿por qué exportarlo nuevamente?
alpha_989
2

Otra razón relacionada de alguna manera con pam que puede afectar a los hosts con autenticación de powerbroker / pbis / similar.

grep /etc/pam.d para la ocurrencia de "lsass":

grep -r lsass /etc/pam.d

si ves en la salida algo como:

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

entonces es probablemente la causa raíz del problema. La solución rápida es reemplazar "suficiente" con "opcional" al lado del módulo pam_lsass para que se vea así:

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

/etc/pam.d/common-session (u otro archivo con una entrada similar, puede haber algunos de ellos) probablemente esté incluido en /etc/pam.d/sshd antes de cargar pam_env, por lo que si el procesamiento de los módulos pam ha finalizado antes de llegar a pam_env, / etc / default / locale no se carga en el entorno del usuario y tiene caracteres ilegibles.

fakej Gazeta.pl
fuente
2

Después de 15 años me molesté una vez más y busqué en Google nuevamente, encontré esto, elegí

cambiar configuraciones → ventana → traducción → conjunto de caracteres remoto → "usar codificación de fuente"

Y eso lo arregló.

jason
fuente
2

Tenía que establecer, en la página VentanaTraducción , el conjunto de caracteres para:

ISO-8859-1: 1998 (latín-1, Europa occidental)

Entonces, y solo entonces, aparecieron correctamente los caracteres rayados.

zootal
fuente
1

Ejecutar mc de esta manera (establecer locale en en) funciona para mí:

$ LC_ALL=en mc
marioosh
fuente
1

lo que funcionó para mí fue "Conexión, Datos, Cadena de tipo terminal = ansi" más "Ventana, Traducción, Juego de caracteres remoto = Usar codificación de fuente" y luego set TERM=ansien el lado de Unix.

PD. Recuerde desactivar las comillas inteligentes si se ve obligado a usar MS-Word.

TRM
fuente
1
También debe mencionar que no se está conectando a un sistema LInux moderno, sino a un sistema anterior que no es Linux.
Michael Hampton
1

Mi problema fue que la masilla está configurada como UTF-8 pero el sistema remoto es un ISO-8859-1

Europa occidental, así que cambié eso en masilla y todo funcionó bien.

Captura de pantalla de masilla

Velteyn
fuente