Comment réparer PuTTY montrant des caractères tronqués?

77

Lors de la connexion d'un ordinateur Windows 7 via SSH à un serveur Ubuntu à l'aide de PuTTY , des erreurs d'écran sont générées:

entrez la description de l'image ici

C'est-à-dire:

  • "Double-tire" la sélection dans Midnight Commander (MC).
  • D'autres caractères tels que les éléments de ligne sont dessinés avec des caractères incorrects (par exemple, "â" au lieu de "|").

Je me suis connecté au même serveur Ubuntu avec un terminal et SHH sous Mac OS X et je ne reçois pas ces râles sur l’écran (c’est-à-dire que tout semble et fonctionne correctement). J'ai déjà essayé de jouer avec les paramètres de police à l'intérieur de PuTTY, en le changeant de Courier New à Consolas mais sans succès.

Ma question est donc:

Comment configurer PuTTY pour afficher correctement les caractères spéciaux et ne pas double-dessiner / écraser les lignes d'écran?

Uwe Keim
la source
1
Avec SecureCRT: Sélectionnez Options -> Options de session -> Terminal -> Apparence -> Encodage des caractères -> sélectionnez: UTF-8. J'espère aider les autres comme moi!
Vunb le

Réponses:

72

Vous avez certainement défini le mauvais jeu de caractères dans vos paramètres de PuTTY .

Vérifiez le jeu de caractères sur le système distant en exécutant la commande:

locale

Cela devrait retourner quelque chose comme:

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=

Vérifiez donc vos paramètres PuTTY sous Traduction et assurez-vous que vous avez UTF-8défini le jeu de caractères.

Reconfiguration PuTTY

Vous devrez peut-être aussi modifier le réglage du dessin au trait, mais ce n’est probablement pas probable.

Michael Hampton
la source
14
Ce n'est pas suffisant dans tous les cas. Vous devez également exporter la variable suivante dans votre environnement: NCURSES_NO_UTF8_ACS=1 [plus d'infos ]
Piotr Jurkiewicz
2
Dans le cas où vous seriez localerenvoyé, POSIXvous avez probablement désactivé usePAM dans la configuration sshd
user2693017.
4
Si les paramètres régionaux renvoient quelque chose comme POSIX, lancez-update-locale LANG=en_US.utf8 le à la ligne de commande - voir thomas-krenn.com/de/wiki/Locales_unter_Ubuntu_konfigurieren
koppor
@ michael-hampton, mon système est configuré pour utiliser en_US.UTF-8. Je vois que différents endroits disent des choses différentes sur les paramètres régionaux. Certains endroits mentionnent que je devrais utiliser en_US tandis que d'autres mentionnent que je devrais utiliser de_DE. J'ai déjà vu que grep et d'autres utilitaires principaux utilisaient les paramètres régionaux pour définir le jeu de caractères, je crois. Quelles sont les implications pour changer cela?
alpha_989
@koppor, vous avez parlé de changer les paramètres régionaux en en_US, tandis que michael a mentionné de changer les paramètres régionaux en de_DE. Laquelle est correcte?
alpha_989
34

J'ai eu un problème avec le aptitudeprogramme Debian même si j'avais UTF-8 comme jeu de caractères. Ce qui a fonctionné pour moi a été de définir "Connexion> Données>" Chaîne de type terminal "sur" mastic "au lieu de" xterm "- apparemment, Putty ignore la séquence de caractères pour passer en mode dessin: http: //www.chiark.greenend .org.uk / ~ sgtatham / putty / wishlist / utf8-plus-vt100.html

entrez la description de l'image ici

Daniel Sokolowski
la source
2
Excellent. Facile et ça marche. (Du moins c'est le cas sur Debian / Ubuntu.)
Nate le
1
Cela fonctionne bien (sur PuTTY), mais cela introduit un autre problème (plus mineur): le changement de titre de fenêtre contrôlé à distance ne fonctionne plus.
ADTC
Excellent. Résolu le problème pour ncmpc sur Ubuntu Artful.
weberjn
8

Les deux facteurs de base sont Window / Translation UTF-8 dans Putty et les paramètres régionaux sous Linux, comme indiqué ici et dans de nombreux autres endroits.

En outre, il peut être utile, dans putty, de définir une chaîne de type connexion / données / terminal sur putty et / ou sous Linux export NCURSES_NO_UTF8_ACS=1. Ces deux sont également mentionnés plusieurs endroits.

Mais vous pouvez toujours obtenir des blocs pour certains caractères car les polices par défaut telles que Courier et Lucida Console ne possèdent pas tous les caractères Unicode. Téléchargez et installez http://dejavu-fonts.org/wiki/Download et configurez putty pour l'utiliser.

Ce dernier tour était nécessaire pour que je puisse noping(recommandé!) Montrer tous les caractères graphiques.

GauteLund
la source
2
export NCURSES_NO_UTF8_ACS=1a fonctionné mieux pour moi. Je dois juste me rappeler d'utiliser l' -Eoption sudolorsque je cours iftoppour conserver ce paramètre d'environnement. sudo -E iftop
HeatfanJohn
5

Dans mon cas (Ubuntu 14.04), le problème était dû à l'absence de

UsePAM yes    

L'entrée dans / etc / ssh / sshd_config en tant que /etc/pam.d/sshd pam configuration est responsable par défaut du chargement de / etc / default / locale dans l'environnement des utilisateurs.

fakej Gazeta.pl
la source
Cela a résolu le problème pour moi.
Martin
5

Pour tous les pauvres vieux VMS qui finissent ici:

PuTTY → Fenêtre → Traduction → Jeu de caractères distant → DEC-MCS

a travaillé pour moi.

David Rabahy
la source
4

Je cherchais de nombreuses solutions à cela lors de l’utilisation de la machine Docker (paramètres régionaux et sur les machines configurées par l’administrateur système). Dans mon Putty, tout allait bien (j'avais UTF-8), j'utilisais aussi un autre client SSH et j'avais exactement le même problème.

Fonctionnement:

mc -ac

résolvait le problème (mais pas complètement) et je cherchais une solution complète.

Après avoir lu de nombreuses suggestions, j'ai finalement trouvé celle qui a résolu mon problème.

Dans le terminal lorsque vous exécutez:

locale

vérifiez les paramètres régionaux que vous avez définis. J'avais par défaut des Cparamètres régionaux.

Pour vérifier tous les paramètres régionaux installés, exécutez locale -a

J'ai par exemple:

C
C.UTF-8
POSIX

par défaut.

La solution exporte LANGvariable avec les C.UTF-8paramètres régionaux comme suit:

export LANG="C.UTF-8"

Vous pouvez évidemment l'ajouter .bashrcpour qu'il soit automatiquement défini dans votre profil.

Marcin Nabiałek
la source
Quels sont les effets secondaires de la modification de la variable LANG? Si vous aviez déjà C.UTF-8 en tant que LANG, pourquoi l'exporter à nouveau?
alpha_989
2

Une autre raison liée d'une manière quelconque à pam peut affecter les hôtes avec l'authentification powerbroker / pbis / de même.

grep /etc/pam.d pour l'occurrence "lsass":

grep -r lsass /etc/pam.d

si vous voyez dans la sortie quelque chose comme:

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

alors c'est probablement la cause fondamentale du problème. La solution rapide consiste à remplacer "suffisant" par "facultatif" à côté du module pam_lsass afin qu'il ressemble à ceci:

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

/etc/pam.d/common-session (ou un autre fichier avec une entrée similaire - il y en a peut-être quelques-uns) est probablement inclus par /etc/pam.d/sshd avant que pam_env ne soit chargé, donc si le traitement des modules pam est terminé Avant d’arriver à pam_env, le fichier / etc / default / locale n’est pas chargé dans l’environnement utilisateur et vous avez des caractères tronqués.

fakej Gazeta.pl
la source
2

Au bout de 15 ans, je me suis énervé une fois de plus et j'ai de nouveau cherché sur Google.

modifier les paramètres → fenêtre → traduction → jeu de caractères distant → "utiliser le codage de police"

et cela l'a corrigé.

Jason
la source
2

Je devais définir, dans la page FenêtreTraduction , le jeu de caractères sur:

ISO-8859-1: 1998 (Latin-1, Europe occidentale)

Alors, et alors seulement, les caractères alignés apparaissent correctement.

zootal
la source
1

Exécuter mc de cette manière (définir les paramètres régionaux sur en) fonctionne pour moi:

$ LC_ALL=en mc
marioosh
la source
1

Ce qui a fonctionné pour moi, c’était "Connexion, Données, Type de terminal chaîne = ansi", plus "Fenêtre, Traduction, Jeu de caractères distant = Utiliser le codage de police", puis set TERM=ansidu côté Unix.

PS N'oubliez pas de désactiver les guillemets intelligents si vous êtes obligé d'utiliser MS-Word.

TRM
la source
1
Vous devez également mentionner que vous ne vous connectez pas à un système LInux moderne, mais à un système plus ancien que Linux.
Michael Hampton
1

Mon problème était que le mastic est configuré comme UTF-8 mais le système distant est un ISO-8859-1

Europe occidentale, alors j'ai changé cela sur le mastic et tout fonctionnait bien.

Putty capture d'écran

Velteyn
la source