Erst heute hatte ich wieder den Fall, dass ein frisch installiertes Debian-System (bei einem VServer-Hoster) auf ISO-8859-1 und deutsch voreingestellt war. Mit der deutschen Sprache könnte ich mich zwar noch anfreunden, jedoch bevorzuge ich ein englisches System, dass UTF-8 als Zeichensatz verwendet. Die folgende Anleitung ist daher mit nur wenigen Änderungen dem Wiki des deutschen Debianforums entnommen (Originalanleitung hier).
Ziel: Die locales auf UTF8 umstellen Währungs- und Zahlendarstellung nach deutscher Art, sonst aber weiterhin ein englisches System.
Deshalb: Seit Etch verwendet Debian UTF8 als Standardcodierung, davor war es ISO8859-1. Wenn nun z.B. ssh-Verbindungen zwischen UTF8- und ISO8859-Systemen gemacht werden, kommt es zu Charset-Konflikten. Das heißt: Zeichen, die nicht zum ASCII Standard gehören werden als nicht lesbare Zeichen dargestellt. Zudem ist UTF-8 der Standard der Zukunft, und es ist sicher kein Fehler seine alten Systeme anzupassen.
1) Die locales verändern
$ sudo dpkg-reconfigure locales
In der Auswahlliste mindestens die folgenden Einträge auswählen:
de_DE.ISO8859-1
de_DE.UTF-8
en_US.ISO8859-1
en_US.UTF-8
Wichtig: auch die alten ISO-Charsets auswählen, da der Befehl sonst mit einem Fehler abbricht. (Vermutlich werden sie gebraucht umd vorhandene Daten korrekt darzustellen)
Es kann sein, dass das Paket locales nicht installiert ist (z.B. bei Debian GNU/kFreeBSD), dann dieses einfach vorher installieren. Dieser Fall ist aber die Ausnahme.
2) /etc/environment wurde bei mir nicht mit angepasst, deshalb:
$ sudo vim /etc/environment
LANGUAGE="en_US.UTF-8"
LANG=en_US.UTF-8
Wichtig: immer UTF-8 und nicht utf8 verwenden!
3) Nun ist alles entsprechend konfiguriert. Um die Änderungen wirksam werden zu lassen, müssen wir uns aus- und neu einloggen. Also: alles beenden (auch X) und am TTY neu anmelden. (Alternativ kann natürlich auch der Rechner neu gestartet werden ..)
4) Nach der neuen Anmeldung sollte man die Settings noch prüfen. Meine Ausgaben sehen folgendermaßen aus:
$ locale -a
C
de_DE
de_DE.iso88591
de_DE.utf8
deutsch
en_US
en_US.iso88591
en_US.utf8
german
POSIX
(Alle installierten Locales. Bei dpkg-reconfigure ausgewählt)
$ locale
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=de_DE.UTF-8
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=de_DE.UTF-8
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
(Die Locales des Users. Sollten bei allen Usern gleich sein, falls diese sie nicht selbst in ihrer bashrc oder so setzen. Wenn LC_ALL gesetzt ist, dann werden alle anderen Locales überschrieben, deshalb leer lassen)
$ cat /etc/environment
LANGUAGE="en_US.UTF-8"
LANG=en_US.UTF-8
(Wie manuell verändert)
$ cat /etc/default/locale
# File generated by update-locale
LANG=en_US.UTF-8
LC_PAPER=de_DE.UTF-8
LC_NUMERIC=de_DE.UTF-8
LC_MONETARY=de_DE.UTF-8
(wie mit update-locales gesetzt)
5) Fertig, das System ist umgestellt.