Locales bieten unter Unix/Linux eine Möglichkeit, die Sprache der Anwendungen, die verwendeten Zeichentabellen und diverses Programmverhalten auszuwählen.
.cshrc
die Locale auf C
gesetzt wird. Dies führt auf den Linux-Poolrechnern
zu einer falschen Zeichenkodierung. Bitte entfernen Sie daher ggf. mit einem Text-Editor
die folgende Zeile aus Ihrer ~/.cshrc
(nahe am Anfang) [oder kommentieren Sie diese Zeile aus]:setenv LANG C
Der Rechnerbetrieb empfiehlt Benutzern, die nicht auf eigenen Wunsch eine C-shell (csh oder tcsh) verwenden, auf die bash umzustellen. Für die Umstellung reicht eine einfache Mail an staff@mixxNOSPAMxx.fu-berlin.de mit dem Subject "Bitte Benutzer xyz auf bash umstellen" aus.
Welche Shell sie gerade verwenden, erfahren Sie z.b. mittels des
Kommandos ps -p $$
.
Locales wirken auf fast alle Anwendungen; sie werden auf alle Anwendungen vererbt, die z.B. aus der Shell, aus KDE oder aus Gnome gestartet werden.
locale
auf der Shell werden diese angezeigt.
Die verwendete Zeichentabelle erfährt man mittels locale charmap
Eine Liste aller auf dem System installierten Locales erhält man mittels locale -a
Die gewünschte Locale ist am einfachsten direkt im verwendeten Desktop (egal ob KDE, Gnome oder CDE) in dessen Einstellungen bzw. dem Login-Manager auszuwählen.
In der Shell können diese Einstellungen durch Setzen und Exportieren einiger Umgebungsvariablen verändert werden (hier eine Auswahl der wichtigsten dieser Variablen):
LANG
Standardsprache
LC_CTYPE
Zeichensatz
LC_COLLATE
Sortierreihenfolge (wird manchmal anders als LANG gebraucht)
LC_TIME
Datum und Uhrzeit
LC_MONETARY
Währung und Zahlenformate für Geldbeträge
LC_MESSAGES
(Fehler-)Meldungen
LC_MEASUREMENT
Maßeinheiten
LC_ALL
setzt alle anderen Locale-Einstellungen außer Kraft.
Die wichtigsten Locales sind
C
oder POSIX
Englisch, 7-bit (veralteter Default, keine Umlaute)
de_DE.UTF-8
Deutsch mit Unicode als Zeichensatz (empfohlener Default)
de_DE.ISO-8859-1
Deutsch mit iso-8859-1 als Zeichensatz. (veralteter Default)
en_US.UTF-8
Englisch mit Unicode als Zeichensatz (unterstützt Umlaute).
en_US.ISO-8859-1
Deutsch mit iso-8859-1 als Zeichensatz (unterstützt Umlaute).
en_DK
als LC_TIME
für das ISO 8601-Datumsformat ("dänisches Englisch").
.bashrc
oder .zshrc
etwas der Art zu schreiben:
#locale stuff eval $(locale) unset LC_ALL unset LC_CTYPE LANG=C LC_MESSAGES=C LC_TIME=en_DK.UTF-8 export LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATIONDiese Einstellungen wirken ggf. nur auf die aus der Shell (Kommandozeile) gestarteten Programme. Wenn das "darunterliegende" Terminalfenster noch mit einer anderen locale gestartet worden ist, werden daher UTF-8 Zeichen nicht korrekt dargestellt. Als Abhilfe von der Shell aus kann fuer den kurzfristigen Test ein neues Terminal (xterm, etc) gestartet werden, in dem diese Einstellung dann wirksam ist.
client-error-bad-request
abgelehnt (dies betrifft insbesondere unter
der Debian-Distribution "sarge" laufende Systeme, sowie unter Solaris
laufende Systeme), oder spaetestens mit =Unsupported character set
"iso-8859-15"= oder Unsupported character set "iso-8859-1"
abgewiesen.
Die letzteren beiden Charsets waren in der Vergangenheit gerne empfohlen
worden um Umlaute verwenden zu koennen, und werden daher vor allem in
den C-Shell setups am Fachbereich oft explizit gesetzt.
Locale | Charset |
---|---|
de_DE | ISO-8859-1 |
de_DE@euro | ISO-8859-15 |
Leider gibt es auch einige Java-Applikationen, die mit nicht-englischen locales beim öffnen ihres Fensters abstürzen. Meistens hilft es dann, auf dem Terminal(Fenster) die Spracheinstellung auf 'POSIX' festzulegen
locale charmap
)
Kritisch ist dies insbesondere auf Systemen, die unter Sarge laufen. Unter Etch
laufende Systeme und die neueren Systeme unter Lenny und Squeeze verhalten sich
an dieser Stelle toleranter, und akzeptieren teilweise abweichende
Einstellungen, solange diese nicht die Umlautkodierungen betreffen.
Insbesondere kann ab Etch auch die Locale C
oder POSIX
selektiert
werden; unter Sarge wird dies umgehend mit der Verweigerung des Drucksystems
"bestraft".
Locale | Charset |
---|---|
de_DE.UTF-8 | UTF-8 |
en_US.UTF-8 | UTF-8 |
Alle Linux-Poolrechner sind so eingestellt, dass die die Locale-Einstellung per SSH mit übertragen und übernommen werden. Um dies auf eigenen LINUX-Rechnern genauso machen zu können, sind möglicherweise folgende Config-Änderungen nötig:
AcceptEnv LANG LC_*
in der sshd_config
SendEnv LANG LC_*
in der ssh_config
oder in ~/.ssh/options
Falls mal irgendwer Zeit hat, fehlt hier die Erklärung, wie man mit Win*-basierten Terminals SO auf LINUX einloggt, dass die oben stehenden Probleme gleich ausgelassen werden.
OK,er also ein paar Hinweise zum Ausprobieren in Windows:
Das einfachste ssh-Verbindungs-Programm ist 'putty', mit dem man sich relativ schnell eine 'Sitzung' fest voreinstellen kann, die man dann problemlos direkt starten kann. Das Programm ist SEHR klein, sodass man es auch hervorragend auf einem USB-Stick mitnehmen kann.
Da unsere UNIX-ssh-server die Angabe 'LANG' zu übernehmen erlauben, sollte damit sofort die Sitzung mit UTF8-Zeichenrepraesentation arbeiten.
In einem 'Shortcut' auf das Programm 'Putty' kann man dann die Parameter '-load' und '"sessionname"' hinzufügen, um eine bestimmte Session direkt aufzurufen.
Falls es auf der UNIX-Seite Probleme gibt, mit Aufruf 'locale' prüfen, ob der Wert übernommen wurde, und sicherheitshalber die TTY-Einstellung mit 'stty cs8 -parenb iutf8' korrigieren (d.h. 8bit/byte-ohne-Parität und Eingabe(i) im utf8-Format (also "mehr als ein Byte pro Zeichen" erlauben).
-- ChristophVonStuckrad - 2010-08-07