Lösung 1:
Bearbeiten Sie /etc/default/locale
und setze den Inhalt auf:
LANG="nl_NL.UTF-8"
Sie können überprüfen, welche Gebietsschemas Sie derzeit generiert haben mit:
locale -a
Sie können mehr generieren, indem Sie /etc/locale.gen
bearbeiten und kommentieren Sie die Zeilen für die Gebietsschemata aus, die Sie aktivieren möchten. Dann können Sie sie generieren, indem Sie den Befehl ausführen:
locale-gen
Eine Liste der unterstützten Gebietsschemas finden Sie in /usr/share/i18n/SUPPORTED
Weitere Informationen sind im Debian-Wiki verfügbar.
Lösung 2:
Möglicherweise müssen Sie den locales
installieren Paket. Dadurch werden Sie gefragt, welche Gebietsschemata generiert werden sollen. Wenn es bereits installiert ist, dann dpkg-reconfigure locales
können Sie weitere Gebietsschemata generieren.
Lösung 3:
Die Antworten hier sind wie bei den meisten anderen unvollständig. Nachdem ich Informationen von einigen Stellen zusammengetragen hatte, funktionierte für mich Folgendes:(1) Sicherstellen, dass das gewünschte Gebietsschema verfügbar war (generieren, falls nicht), dann (2) gebietsschemabezogene Umgebungsvariablen auf das gewünschte Gebietsschema setzen.
In meinem Fall brauchte ich en_US.UTF-8
programmgesteuert (d. h. nicht interaktiv) in einem Docker-Container installiert. Das ff hat erreicht, was ich brauche, aber es sollte in einer interaktiven Shell gut funktionieren.
apt-get update
# Install locales package
apt-get install -y locales
# Uncomment en_US.UTF-8 for inclusion in generation
sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen
# Generate locale
locale-gen
# Export env vars
echo "export LC_ALL=en_US.UTF-8" >> ~/.bashrc
echo "export LANG=en_US.UTF-8" >> ~/.bashrc
echo "export LANGUAGE=en_US.UTF-8" >> ~/.bashrc
Auf derselben Shell müssen Sie source ~/.bashrc
ausführen damit die env-Variablen sofort wirksam werden. Sie können überprüfen, ob das Gebietsschema korrekt konfiguriert wurde, indem Sie locale
aufrufen .
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.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=en_US.UTF-8
Es gab viele Q&A-Einträge zu diesem Thema, aber nur wenige waren wirklich hilfreich. Gutschrift wem Ehre gebührt:
- https://unix.stackexchange.com/a/247019/21289
- https://perlgeek.de/en/article/set-up-a-clean-utf8-environment
Lösung 4:
Keine dieser Antworten funktionierte bei mir auf einem LXC-Container, der mit installiert wurde:
lxc-create -n sse-master -t download -n sse-master -- \
-d debian -r jessie --arch i386
Ich habe immer die folgende Ausgabe von locale-gen
erhalten , d.h. es werden keine Locales generiert (keine aufgelistet):
$ sudo locale-gen
Generating locales (this might take a while)...
Generation complete.
Ausführen von dpkg-reconfigure locales
und die Auswahl einiger Gebietsschemas hat /etc/locale.gen
nicht aktualisiert wie ich es erwartet hatte.
Als ich diese Datei jedoch manuell änderte und die gewünschten Gebietsschemas auskommentierte, dann locale-gen
richtig funktioniert:
$ sudo locale-gen
Generating locales (this might take a while)...
en_GB.UTF-8... done
en_US.UTF-8... done
Generation complete.
Ich war auch in der Lage, Gebietsschemata manuell wie folgt zu generieren:
sudo localedef -i en_US -f UTF-8 en_US.UTF-8
sudo localedef -i en_GB -f UTF-8 en_GB.UTF-8
Aber das war keine dauerhafte Lösung:Ich fand das mit locale-gen
ohne --keep-existing
Option löscht alle diese manuell generierten Gebietsschemas, d. h. jedes Gebietsschema, das nicht in /etc/locale.gen
aufgeführt (und unkommentiert) ist .
Lösung 5:
Für eine Webanwendung ist es möglicherweise besser, setlocale zu verwenden () innen des Programms, anstatt zu verlangen, dass das Standardgebietsschema des Systems entsprechend außerhalb festgelegt wird. Auf diese Weise gibt es weniger lose Enden.