Come risolvere PuTTY mostrando personaggi confusi?


77

Collegandomi da un PC Windows 7 tramite SSH a un server Ubuntu tramite PuTTY , ottengo alcuni errori dello schermo:

inserisci qui la descrizione dell'immagine

Cioè:

  • "Disegna in doppio" la selezione all'interno di Midnight Commander (MC).
  • Altri caratteri come gli elementi di linea vengono disegnati come caratteri errati (ad es. "Â" anziché "|").

Mi sono collegato allo stesso server Ubuntu con un terminale e SHH da un Mac OS X e non riesco a ottenere questi confondimenti dello schermo (cioè tutto sembra e funziona correttamente). Ho già provato a giocare con le impostazioni dei caratteri all'interno di PuTTY, cambiando da Courier New a Consolas ma senza fortuna.

La mia domanda quindi è:

Come configurare PuTTY per visualizzare correttamente caratteri speciali e non disegnare / sovrascrivere due volte le linee dello schermo?


1
Con SecureCRT: selezionare Opzioni -> Opzioni sessione -> Terminale -> Aspetto -> Codifica caratteri -> selezionare: UTF-8. Spero di aiutare gli altri come me!
Vunb,

Risposte:


72

Quasi sicuramente hai impostato il set di caratteri sbagliato nelle impostazioni di PuTTY .

Verificare il set di caratteri sul sistema remoto eseguendo il comando:

locale

Questo dovrebbe restituire qualcosa del tipo:

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=

Quindi controlla le impostazioni di PuTTY in Traduzione e assicurati di aver UTF-8impostato come set di caratteri.

Riconfigurazione PuTTY

Potrebbe essere necessario modificare anche l'impostazione del disegno al tratto, ma probabilmente non è probabile.


14
Questo non è sufficiente in tutti i casi. Dovresti anche esportare la seguente variabile nel tuo ambiente: NCURSES_NO_UTF8_ACS=1 [maggiori informazioni ]
Piotr Jurkiewicz,

2
nel caso in cui localeritorni POSIXprobabilmente hai usePAM disabilitato nella configurazione sshd
user2693017

4
Se le impostazioni locali restituiscono qualcosa del genere POSIX, rilasciare update-locale LANG=en_US.utf8dalla riga di comando - vedi thomas-krenn.com/de/wiki/Locales_unter_Ubuntu_konfigurieren
koppor

@ michael-hampton, il mio sistema è configurato per utilizzare en_US.UTF-8. Vedo che luoghi diversi dicono cose diverse sul locale. Alcuni posti menzionano che dovrei usare en_US mentre altri menzionano che dovrei usare de_DE. Ho visto prima che grep e altri programmi di utilità di base usassero le impostazioni locali per impostare il set di caratteri, credo. Quali sono le implicazioni nel cambiare questo?
alpha_989,

@koppor, hai menzionato la modifica della locale in en_US, mentre michael ha menzionato la modifica della locale in de_DE. Quale è corretto?
alpha_989,

34

Ho avuto un problema con il aptitudeprogramma Debian anche se avevo UTF-8 come set di personaggi. Ciò che ha funzionato per me è stato impostare "Connessione> Dati>" Stringa di tipo terminale "su" putty "anziché" xterm "- apparentemente Putty ignora la sequenza di caratteri per passare alla modalità di disegno: http: //www.chiark.greenend .org.uk / ~ sgtatham / stucco / lista dei desideri / utf8-plus-vt100.html

inserisci qui la descrizione dell'immagine


2
Eccellente. Facile e funziona. (Almeno su Debian / Ubuntu.)
Nate

1
Funziona bene (su PuTTY) ma poi introduce un altro (più piccolo) problema: la modifica del titolo della finestra telecomandata non funziona più.
ADTC

Eccellente. Risolto il problema per ncmpc su Ubuntu Artful.
weberjn,


8

I due fattori di base sono Window / Translation UTF-8 nelle impostazioni di stucco e impostazioni locali in Linux, come indicato qui e in molti altri luoghi.

Inoltre, può essere utile in putty impostare stringa di tipo Connection / Data / Terminal su putty e / o in Linux su export NCURSES_NO_UTF8_ACS=1. Questi due sono anche menzionati più luoghi.

Ma: potresti ancora ottenere blocchi per alcuni personaggi perché i caratteri predefiniti come Courier e Lucida Console non hanno tutti i caratteri Unicode. Scarica e installa http://dejavu-fonts.org/wiki/Download e imposta lo stucco per usarlo.

Quest'ultimo trucco è stato necessario per me noping(consigliato!) Per mostrare tutti i personaggi grafici.


2
export NCURSES_NO_UTF8_ACS=1ha funzionato meglio per me. Devo solo ricordare di usare l' -Eopzione sudoquando corro iftopper mantenere l'impostazione dell'ambiente. sudo -E iftop
Heatfan John,

5

Nel mio caso (Ubuntu 14.04) il problema era causato dalla mancanza

UsePAM yes    

la voce in / etc / ssh / sshd_config come /etc/pam.d/sshd la configurazione di pam è responsabile per impostazione predefinita del caricamento di / etc / default / locale nell'ambiente degli utenti.


Questo mi ha risolto.
Martin,

5

Per tutti voi poveri ragazzi VMS che finiscono qui:

PuTTY → Finestra → Traduzione → Set di caratteri remoti → DEC-MCS

ha funzionato per me.


4

Stavo cercando molte soluzioni per questo quando usavo la macchina Docker (sia locale che su macchine configurate dall'amministratore di sistema). Nel mio Putty tutto andava bene (avevo UTF-8), stavo usando anche altri client SSH e avevo lo stesso identico problema.

In esecuzione:

mc -ac

stava risolvendo il problema (ma non completamente) e stavo cercando una soluzione completa.

Dopo aver letto molti suggerimenti, ho finalmente trovato quello che ha risolto il mio problema.

Nel terminale quando si esegue:

locale

verifica le impostazioni internazionali che hai impostato. Avevo impostazione predefinita C.

Per verificare l'esecuzione di tutte le impostazioni locali installate locale -a

Ho ad esempio:

C
C.UTF-8
POSIX

per impostazione predefinita.

La soluzione sta esportando una LANGvariabile con C.UTF-8impostazioni locali in questo modo:

export LANG="C.UTF-8"

Puoi ovviamente aggiungerlo .bashrcper impostarlo automaticamente nel tuo profilo.


Quali sono gli effetti collaterali della modifica della variabile LANG? Se hai già avuto C.UTF-8 come LANG, perché esportarlo di nuovo?
alpha_989,

2

Un altro motivo è in qualche modo legato al pam che può influenzare gli host con l'autenticazione powerbroker / pbis / similmente.

grep /etc/pam.d per l'evento "lsass":

grep -r lsass /etc/pam.d

se vedi nell'output qualcosa di simile:

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

quindi è probabilmente la causa principale del problema. La soluzione rapida è sostituire "sufficiente" con "opzionale" accanto al modulo pam_lsass in modo che appaia:

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

/etc/pam.d/common-session (o altro file con voce simile - potrebbero essercene alcuni) potrebbe essere incluso da /etc/pam.d/sshd prima che pam_env venga caricato, quindi se l'elaborazione dei moduli pam è terminata prima che arrivi a pam_env, il file / etc / default / locale non viene caricato nell'ambiente utente e hai caratteri confusi.


2

Dopo 15 anni mi sono infastidito ancora una volta e ho cercato di nuovo su Google, ho trovato questo, ho scelto

cambia impostazioni → finestra → traduzione → set di caratteri remoti → "usa la codifica dei caratteri"

e questo l'ha risolto.


2

Ho dovuto impostare, nella pagina FinestraTraduzione , il set di caratteri su:

ISO-8859-1: 1998 (Latino-1, Europa occidentale)

Quindi, e solo allora, i personaggi allineati apparivano correttamente.


1

L'esecuzione di mc in questo modo (imposta la locale su en) funziona per me:

$ LC_ALL=en mc

1

ciò che ha funzionato per me è stato "Connessione, Dati, stringa di tipo Terminale = ansi" più "Finestra, traduzione, set di caratteri remoto = Usa codifica caratteri" quindi set TERM=ansisul lato Unix.

PS. Ricorda di disattivare le virgolette intelligenti se sei costretto a utilizzare MS-Word.


1
Dovresti anche menzionare che non ti stai collegando a un moderno sistema LInux, ma a un vecchio sistema non Linux.
Michael Hampton

1

Il mio problema era che lo stucco è configurato come UTF-8 ma il sistema remoto è un ISO-8859-1

Europa occidentale, quindi l'ho cambiato su stucco e tutto ha funzionato bene.

Schermata di Putty

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.