Ich versuche zu lernen, wie sich die $LANG
Variable mit dem Gnome-Terminal (und seiner Voreinstellungsoption für die Zeichenkodierung) verhält. Ich habe iso8859-1 (latin1) als Hauptzeichensatz verwendet und alle meine Dateinamen sind als solche codiert.
Für die folgenden Tests werde ich ein ls -l
Verzeichnis mit Zeichen mit spanischem Akzent in ihren Dateinamen erstellen:
Fall 1:
- Gnome-Terminal konfiguriert für ISO-8859-1
LANG
auf "en_US-iso8859-1" setzen- Ergebnis: Ich sehe alle Dateien korrekt
Fall 2:
- Gnome-Terminal für UTF-8 konfiguriert
LANG
auf "en_US-iso8859-1" setzen- Ergebnis: Ich sehe Müllzeichen für alle spanischen Zeichen. Dies wird erwartet, da ich die Zeichenkodierung für das Terminal geändert habe
Fall 3:
- Gnome-Terminal konfiguriert für ISO-8859-1
LANG
auf "en_US-UTF-8" setzen- Ergebnis: Ich sehe Müllzeichen für alle spanischen Zeichen.
Warum sehe ich in diesem letzten Fall verstümmelte Zeichen? Sollte die Ausgabe von ls die Dateinamen nicht so wie sie sind direkt an das Gnome-Terminal senden? Und da das Gnome-Terminal für ISO-8859-1 konfiguriert ist, hätte ich erwartet, dass sie richtig aussehen.
Für einen Moment dachte ich, dass Bash vielleicht meine $LANG
Variable berücksichtigt und eine Konvertierung durchführt. Dann habe ich mein Terminal auf UTF-8 umgestellt, aber ich kann die Zeichen immer noch nicht richtig sehen. Ich habe sogar die Ausgabe von ls an xxd weitergeleitet und zu meiner Überraschung sehe ich die Dateien immer noch so codiert, wie sie sind: ISO-8859-1.
Zum Abschluss: Wenn mein Eintrag ISO-8859-1-Zeichen enthält und mein Terminalemulator für dieselbe Zeichencodierung konfiguriert ist: Wer führt die Konvertierung durch, wenn etwas LANG
anderes festgelegt ist?
Vielen Dank für jede Hilfe, die Sie leisten können.
Craconia