PUTTY und UTF-8
Die kleine freundliche Software PUTTY ist ein hervorragender Freeware-SSH-Client für den verschlüsselten Zugriff auf die Kommandozeile eines entfernten Linux-Servers. Wer einen eigenen Server bei einem Provider betreibt, kommt an diesem Werkzeug nicht vorbei. Bei dem Thema “Zeichensatz” habe ich lange nicht tiefer nachgedacht und hatte deshalb so meine Überraschungen. Da gibt es den Midnight-Commander, der gut für das Navigieren in den Verzeichnisbäumen und zum Editieren von Dateien geeigenet ist, der zur guten Darstellung Liniensymbole verwendet. Und da gibt es unter Suse-Linux z.B. das Konfigurationswerkzeug YAST, dass auch Linensymbole verwendet. Lange habe ich mich damit abgefunden, dass die Liniendarstellung nie in beiden Werkzeugen gleichzeitig funktioniert hat. Jetzt kommt noch hinzu, dass ich mit einer Webanwendung den Datei-Upload anbiete und dabei die Nutzer auf die Idee kommen Dateien von ihrem Windows hochzuladen, die Umlaute im Dateinamen haben. Da war jetzt der Zeitpunkt gekommen, an dem ich mich mit der richtigen Darstellung aller Symbole in meinem Putty beschäftigen musste, mit folgendem Ergebnis:
Das Suse-Linux, und sicher auch andere Linux-Versionen können bereits problemlos mit dem internationalen Zeichensatz UTF-8 umgehen, auch in Dateinamen. Das Linux lässt sich aber auch nicht verwirren, wenn ein Dateiname die Umlaute aus dem europäischen Zeichensatz ISO8859-1 verwendet. Das kann ganz gemischt geschehen. Die Frage am Ende ist nur, wie wird es auf der Konsole, oder im Webbrowser der Nutzers dargestellt, und wo muss eventuell wie konvertiert werden, damit das sichtbar wird, was gewünscht ist.
Bei PUTTY sieht die Sache eigentlich ganz einfach aus: Die Linux-Konsole kennt die Umgebungsvariable LC_CTYPE die sollte für deutsche Nutzer entweder den Wert “de_DE” haben, dann “denkt” die Konsole in ISO8859-1, oder sie sollte den Wert “de_DE.UTF-8″ haben, dann “denkt” sie in UTF-8. Damit das im PUTTY dann auch so wahr wird, muss allerdings in der Konfiguration “Window/Translation” in der Auswahl für den Zeichensatz der passende Zeichensatz ausgewählt werden. Wenn Server-Variable und PUTTY-Einstellung gleich sind, funktioniert es. Das heißt:
Im UTF-8-Mode werden alle UTF-8-Sonderzeichen richtig dargestellt, also ein 2 Byte langes ‘ä’ wird richtig als ein ‘ä’ dargestellt. Alle Zeichen, die im UTF-8-Zeichsatz ungültig sind, werden als ? angezeigt, und im UTF-8-Zeichensatz sind die Umlaute und Liniensymbole des ISO8859-1-Zeichensatzes solche ungültigen Zeichen. Also überall, wo Dateienamen im ISO-Zeichensatz erstellt wurden, werden ? angezeigt. Damit lassen sich solche Dateien auf der Konsole nicht kopieren oder umbenennen, da man im UTF-8-Mode das eigentliche Zeichen nicht sieht und auch nicht eingeben kann. Und es gibt Shell-Anwendungen wie das Suse-YAST, die geben ihre Liniensymbole immer im ISO-Zeichensatz aus, egal wie die Umgebunsvariable gesetzt ist. Damit sieht YAST im UTF-8-Mode schrecklich aus.
Arbeitet man dagegen komplett im ISO8859-1-Mode, funktionieren offensichtlich alle Shell-Anwendungen richtig. Mit den Dateinamen sieht es jetzt allerdings ganz anders aus. Nun werden natürlich alle ISO-Zeichen richtig angezeigt und Dateien mit solchen Zeichen können jetzt kopiert und umbenannt werden. Aber mit den UTF-8-Zeichen in Dateinamen gibt es jetzt Probleme. Jetzt wird natürlich jedes Byte einzeln angezeigt, ein UTF-8-”ä” wird als “ä” angezeigt. Das geht ja noch, weil beide Bytes einzeln auch im ISO-Zeichensatz vorkommen. Aber z.B. bei den großen Umlauten ist das zweite Byte ein Zeichen, dass im ISO-Zeichensatz nicht dargestellt werden kann. Hier wird jetzt wieder ersatzweise ein “?” angezeigt, somit wird das Kopieren und Umbenennen auch wieder ein Problem.
Fazit, wer mit UTF-8-Zeichen arbeitet, sollte sich darauf einrichten immer mal wieder zwischen einer UTF-8-Dartsellung und einer ISO8859-1-Darstellung umschalten zu müssen. Das ist, wie oben dargestellt, nicht sehr schwierig. Wer das oft braucht, könnte sich auf der Serverseite kleine Makros schreiben, muss aber daran denken auch im PUTTY die Translation umzustellen.
Ein sehr empfehlenswerter Link zum UTF-8-Zeichensatz ist
http://www.utf8-zeichentabelle.de