解決策 1:
/etc/default/locale
を編集 内容を次のように設定します:
LANG="nl_NL.UTF-8"
以下を使用して、現在生成しているロケールを確認できます:
locale -a
/etc/locale.gen
を編集することでさらに生成できます 有効にするロケールの行のコメントを外します。次に、コマンドを実行してそれらを生成できます:
locale-gen
サポートされているロケールのリストは /usr/share/i18n/SUPPORTED
にあります
詳細については、Debian wiki を参照してください。
解決策 2:
locales
をインストールする必要があるかもしれません パッケージ。これにより、生成するロケールを尋ねられます。すでにインストールされている場合は dpkg-reconfigure locales
より多くのロケールを生成できます。
解決策 3:
ここでの回答は、他のほとんどの場合と同様に不完全です。いくつかの場所からの情報をつなぎ合わせた後、私にとってうまくいったのは、(1) 必要なロケールが利用可能であることを確認し (利用できない場合は生成する)、(2) ロケール関連の環境変数を目的のロケールに設定することでした。
私の場合、 en_US.UTF-8
が必要でした プログラムによって (つまり、非対話的に) Docker コンテナーにインストールされます。 ff は私が必要としているものを達成しましたが、インタラクティブ シェルでは問題なく動作するはずです。
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
同じシェルで、 source ~/.bashrc
を実行する必要があります 環境変数がすぐに有効になるようにします。 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
このテーマに関して多くの Q&A エントリがありましたが、実際に役立つものはごくわずかでした。クレジットが必要なクレジット:
- https://unix.stackexchange.com/a/247019/21289
- https://perlgeek.de/en/article/set-up-a-clean-utf8-environment
解決策 4:
以下がインストールされた LXC コンテナーでは、これらの回答はどれもうまくいきませんでした:
lxc-create -n sse-master -t download -n sse-master -- \
-d debian -r jessie --arch i386
locale-gen
から常に次の出力を取得しました 、つまり、ロケールを生成しない (リストにない):
$ sudo locale-gen
Generating locales (this might take a while)...
Generation complete.
dpkg-reconfigure locales
を実行中 一部のロケールを選択しても /etc/locale.gen
が更新されませんでした
ただし、そのファイルを手動で変更し、必要なロケールのコメントを外したところ、 locale-gen
正常に動作し始めました:
$ sudo locale-gen
Generating locales (this might take a while)...
en_GB.UTF-8... done
en_US.UTF-8... done
Generation complete.
次のように手動でロケールを生成することもできました:
sudo localedef -i en_US -f UTF-8 en_US.UTF-8
sudo localedef -i en_GB -f UTF-8 en_GB.UTF-8
しかし、これは恒久的な解決策ではありませんでした:locale-gen
を実行していることがわかりました --keep-existing
なし オプションは、そのような手動で生成されたロケールをすべて削除します。つまり、/etc/locale.gen
にリストされていない (およびコメント解除された) すべてのロケールです。 .
解決策 5:
Web アプリケーションの場合は、setlocale を使用した方がよい場合があります () 内側 システムのデフォルトロケールを外部で適切に設定する必要はありません。そうすることで、未解決の問題が少なくなります。