Ich habe einige Probleme mit der Verwendung ssh
und einem Remote-Server (auf den ich keinen Administratorzugriff habe). Insbesondere befinden sich dort einige Ordner mit koreanischem und kyrillischem Text.
Wenn ich den Inhalt des übergeordneten Ordners mit anzeige ls
, werden die Zeichen als "?" Vielleicht ist zu beachten, dass die koreanischen Zeichen weit mehr als die Anzahl der Zeichen, die dort sein sollten , zu entkommen scheinen .
Ich weiß, dass das Terminalprogramm, das ich verwende, die Zeichen so anzeigen kann, wie sftp
sie perfekt angezeigt werden. Das Problem tritt auf allen Terminals auf, die ich ausprobiert habe.
Maschinenübersicht
Lokale Maschine:
- Linux 2.6.32-5-686, i686
- Debian GNU / Linux 6.0.2 (Squeeze)
- Haben Sie Administratorzugriff
Remote-Server:
- Linux 2.6.32-bpo.5-amd64, x86_64
- Debian GNU / Linux 5.0.8 (Lenny)
- Sie haben weder Administratorzugriff noch physischen Zugriff
Ich habe wahrscheinlich eine andere wichtige Statistik oder Information verpasst. In diesem Fall bitte ich um Entschuldigung. Ich bin ziemlich neu auf der ganzen Nicht-Windows-Seite des Computing, daher weiß ich kaum, was ich hier mache.
quelle
locale
undlocale -a
, sowohl lokal als auch remote, bitteAntworten:
Ihre Gebietsschemainformationen sind auf dem Servercomputer nicht korrekt eingerichtet. Insbesondere ist die
LC_CTYPE
Variable, die die Kodierung von Zeichen auf dem Terminal angibt, nicht richtig eingestellt (oder, wie ich vermute, überhaupt nicht).Führen Sie
locale
in Ihrem lokalen Terminal den Befehl aus , um Ihre Ländereinstellungen anzuzeigen. Sie werden wahrscheinlich (unter anderem) so etwas sehenLC_CTYPE=en_US.UTF-8
; Was hier zählt, ist der.UTF-8
Teil, der die UTF-8- Codierung angibt . Dies ist die De-facto-Standardcodierung für mehrsprachigen Text in der Unix-Welt (und darüber hinaus).Sie müssen diese Informationen an den Server übergeben. Der beste Weg, wenn es funktioniert, ist das Senden von Gebietsschemainformationen über die ssh-Verbindung. Fügen Sie dazu am Ende folgende Zeilen hinzu
~/.ssh/config
:Dies setzt voraus, dass eine geeignete
AcceptEnv
Direktive in der Serverkonfiguration (/etc/ssh/sshd_config
) vorhanden ist (standardmäßig unter Debian).Wenn dies nicht funktioniert und Sie sich immer von einem UTF-8-Terminal aus am Server anmelden, fügen Sie die Zeile
export LC_CTYPE=en_US.UTF-8
zu Ihrer~/.bashrc
auf dem Server (oder einer von~/.zshrc
Ihrer Shell verwendeten Datei) hinzu. Der Name des Gebietsschemas (z. B.en_US.UTF-8
) muss einer der Namen sein, die von angeboten werdenlocale -a
, und muss.UTF-8
(.utf8
oder eine geringfügige Variation) aufweisen.quelle
locale
Ausgaben stimmten überein). Allerdingslocale -a
gab die Ferne nur en_GB.utf8 und en_US.utf8. Vielen Dank!locale charmap
/etc/ssh/ssh_config
erforderlich auch sendenLANG
(SendEnv LANG LC_*
)export LC_CTYPE=en_US.UTF-8
meine~/.profile
auf der Serverseite hinzufügen . Das Hinzufügen zu~/.bashrc
schien keine Wirkung zu haben.