In einigen Programmen, z. B. werden htop
die Linien und Rahmen nicht korrekt angezeigt. Stattdessen werden sie als -
und angezeigt /
.
Auf einem anderen Computer werden sie jedoch korrekt als richtige Zeilen angezeigt:
Ich bin nicht sicher, ob dies ein Terminalproblem ist oder ob möglicherweise ein Paket erforderlich ist.
Falls es relevant ist: Mein System ist Debian Wheezy, mein Interpreter ist bash
und mein Terminalemulator istgnome-terminal
terminal
character-encoding
Martin Vegter
quelle
quelle
htop
Anzeige von ASCII-Zeichen. Wenn die Standard-Terminalschrift jedoch Nicht-Unicode ist, ist die Codierung wahrscheinlich auch so, daher habe ich sie meiner Antwort hinzugefügt.Antworten:
Ihr oberstes Beispiel wird mit einem Nicht-Unicode-Gebietsschema (dh ASCII) ausgeführt. Überprüfen Sie Ihre $ LANG-Umgebungsvariable (versuchen Sie es
export | grep LANG
). Sie werden höchstwahrscheinlich kein.UTF-8
Suffix finden. Versuchen Sie es hinzuzufügen:Ihr anderes Beispiel wird mit einem UTF-8-Gebietsschema ausgeführt, das der Standard für aktuelle Shells sein sollte. Es scheint, dass es
htop
Ihr Gebietsschema erkennt und entweder ASCII- oder Unicode-Zeichen anzeigt. Im unteren Bild erhalten Sie also schöne Unicode-Zeichen, während Sie mit ASCII einige ziemlich provisorische Zeichen erhalten. Ich würde vorschlagen, das Gebietsschema des Computers des oberen Bilds in ein Unicode-Gebietsschema zu ändern (siehe Gebietsschema - Debian-Wiki ).Wenn das nicht funktioniert, ist möglicherweise Ihr Terminalemulator das Problem. Die Standardcodierung kann Nicht-Unicode sein. Ändern Sie die Standardcodierung Ihres Terminalemulators in UTF-8 (in
xfce4-terminal
Ich habe sie auf der Registerkarte Erweitert gefunden). Wenn Sie dies nicht können, unterstützt Ihre aktuelle Schriftart möglicherweise Unicode nicht: Versuchen Sie, Ihre Schriftart in eine Unicode-Schriftart zu ändern.[Seltsamerweise stellte ich fest, dass, sobald ich mein Gebietsschema einmal in einer Shell-Sitzung in ASCII geändert hatte,
htop
die ASCII-Zeichen auch nach dem Zurücksetzen immer angezeigt werden. Dies könnte Ihr Problem sein, wenn Sie aus irgendeinem Grund gelegentlich Ihr Gebietsschema in Ihrer Shell ändern.]quelle
Das Seltsame ist, dass
htop
ncurses verwendet wird, die Linien mit / ohne Unicode zeichnen können. Ein Blick auf den Quellcode inCRT.c
zeigt jedoch die Erklärung:und der
CRT_treeStrUtf8
Wert istNcurses (jede Curses-Implementierung) verfügt jedoch über tragbare Symbole für diese, die nicht davon abhängen, ob die Codierung UTF-8 ist oder nicht. Einige Anwendungen (z. B. die Option des Dialogfelds
--ascii-lines
) bieten eine Option für die Verwendung der ASCII-Strichzeichnung. Eine Anwendung, die nicht einmal versucht, die in ncurses bereitgestellte Strichzeichnung zu verwenden, nutzt die Bibliothek jedoch nicht effektiv.Kurz gesagt, wenn Sie auf ein Programm stoßen, das sich so verhält, sollten Sie es den Entwicklern als Fehler melden.
Weiterführende Literatur:
border
,wborder
,box
,hline
,whline
,vline
,wvline
,mvhline
,mvwhline
,mvvline
,mvwvline
- schaffen Flüche Grenzen, horizontale und vertikale Liniendialog
Screenshots ( für die Strichzeichnung ist keine UTF-8-Codierung erforderlich)quelle
LANG
/LC_ALL
Aktivieren der erwarteten Zeichen für das Zeichnen von Unicode-Linienhtop
), ist dies sehr interessant. Vielen Dank, dass Sie sich die Zeit genommen haben, es zu erklären!