Solution 1 :
Modifier /etc/default/locale
et définissez le contenu sur :
LANG="nl_NL.UTF-8"
Vous pouvez vérifier les paramètres régionaux que vous avez actuellement générés en utilisant :
locale -a
Vous pouvez en générer plus en modifiant /etc/locale.gen
et décommentez les lignes pour les paramètres régionaux que vous souhaitez activer. Ensuite, vous pouvez les générer en exécutant la commande :
locale-gen
Vous pouvez trouver une liste des paramètres régionaux pris en charge dans /usr/share/i18n/SUPPORTED
Il y a plus d'informations disponibles sur le wiki Debian.
Solution 2 :
Vous devrez peut-être installer le locales
forfait. Cela vous demandera quels paramètres régionaux générer. S'il est déjà installé, alors dpkg-reconfigure locales
vous permettra de générer plus de paramètres régionaux.
Solution 3 :
Les réponses ici sont incomplètes comme pour la plupart ailleurs. Après avoir rassemblé des informations à partir de quelques endroits, ce qui a fonctionné pour moi était de (1) m'assurer que les paramètres régionaux que je voulais étaient disponibles (le générer si ce n'était pas le cas) puis (2) définir les variables d'environnement liées aux paramètres régionaux sur les paramètres régionaux souhaités.
Dans mon cas, j'avais besoin de en_US.UTF-8
installé par programme (c'est-à-dire de manière non interactive) dans un conteneur Docker. Le ff a accompli ce dont j'avais besoin, mais cela devrait très bien fonctionner dans un shell interactif.
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
Sur le même shell, vous devrez faire source ~/.bashrc
pour que les variables env prennent effet immédiatement. Vous pouvez vérifier que les paramètres régionaux ont été correctement configurés en appelant locale
.
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
Il y avait beaucoup d'entrées de questions-réponses sur ce sujet, mais seules quelques-unes étaient réellement utiles. Crédit où le crédit est dû :
- https://unix.stackexchange.com/a/247019/21289
- https://perlgeek.de/en/article/set-up-a-clean-utf8-environment
Solution 4 :
Aucune de ces réponses n'a fonctionné pour moi, sur un conteneur LXC installé avec :
lxc-create -n sse-master -t download -n sse-master -- \
-d debian -r jessie --arch i386
J'ai toujours obtenu la sortie suivante de locale-gen
, c'est-à-dire ne générant aucune locale (aucune répertoriée) :
$ sudo locale-gen
Generating locales (this might take a while)...
Generation complete.
Exécution de dpkg-reconfigure locales
et la sélection de certains paramètres régionaux n'a pas mis à jour /etc/locale.gen
comme je m'y attendais.
Cependant, lorsque j'ai modifié ce fichier manuellement et décommenté les paramètres régionaux que je voulais, alors locale-gen
a commencé à fonctionner correctement :
$ sudo locale-gen
Generating locales (this might take a while)...
en_GB.UTF-8... done
en_US.UTF-8... done
Generation complete.
J'ai également pu générer des paramètres régionaux manuellement comme ceci :
sudo localedef -i en_US -f UTF-8 en_US.UTF-8
sudo localedef -i en_GB -f UTF-8 en_GB.UTF-8
Mais ce n'était pas une solution permanente :j'ai trouvé que l'exécution de locale-gen
sans le --keep-existing
l'option supprimera tous ces paramètres régionaux générés manuellement, c'est-à-dire tous les paramètres régionaux non répertoriés (et non commentés) dans /etc/locale.gen
.
Solution 5 :
Pour une application Web, il peut être préférable d'utiliser setlocale () à l'intérieur le programme, plutôt que d'exiger que les paramètres régionaux par défaut du système soient définis de manière appropriée à l'extérieur. Moins d'extrémités lâches de cette façon.