374

Pythonでこれを行うと、なぜ次のエラーが発生するのですか?

>>> import locale
>>> print str( locale.getlocale() )
(None, None)
>>> locale.setlocale(locale.LC_ALL, 'de_DE')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/locale.py", line 531, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting

これは、frやnlなどの他のロケールでも機能します。Ubuntu11.04を使用しています。

更新:次のことを行っても何も得られませんでした:

dpkg-reconfigure locales
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_CTYPE = "UTF-8",
    LANG = (unset)
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
4

21 に答える 21

699

次のコマンドを実行します

export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
sudo dpkg-reconfigure locales

これで解決します。

一部のシステムなどの.UTF-8出力に見られる実際の構文にその部分を一致させてください。locale -a.utf8

于 2016-03-28T06:20:33.887 に答える
238

このリンクによると、次のコマンドを入力して解決しました。

LC_ALL=C をエクスポート

于 2016-05-09T09:26:00.280 に答える
220

de_DEおそらく、使用可能なロケールがありません。

コマンドを使用して、使用可能なロケールのリストを表示できますlocale -a。たとえば、私のマシンでは:

$ locale -a
C
C.UTF-8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
it_CH.utf8
it_IT.utf8
POSIX

it_ITロケールを に設定する場合は、次も指定する必要があることに注意してください.utf8

>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'it_IT')   # error!
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/locale.py", line 539, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting
>>> locale.setlocale(locale.LC_ALL, 'it_IT.utf8')
'it_IT.utf8'

新しいロケールをインストールするには:

sudo apt-get install language-pack-id

id言語コードはどこですか(ここから取得)

ロケールをインストールしたら、Julien Palard のアドバイスに従い、次のようにロケールを再構成する必要があります。

sudo dpkg-reconfigure locales
于 2013-01-27T14:06:07.563 に答える
33

より恒久的な解決策は、次のコマンドで表示される出力で、欠落している値を埋めることです。locale

からの出力localeは次のとおりです。

 $ locale
LANG=en_US.utf8
LANGUAGE=
LC_CTYPE="en_US.utf8"
LC_NUMERIC=es_ES.utf8
LC_TIME=es_ES.utf8
LC_COLLATE="en_US.utf8"
LC_MONETARY=es_ES.utf8
LC_MESSAGES="en_US.utf8"
LC_PAPER=es_ES.utf8
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT=es_ES.utf8
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=

不足している値を埋めるには、 ~/.bashrc を編集します:

 $ vim ~/.bashrc

上記のコマンドの後に次の行を追加します (言語を en_US.UTF-8 にしたいとします):

export LANGUAGE="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"

このファイルが読み取り専用の場合は、The GeekyBoyで言及されている手順に従う必要があります。Dr Beco in Superuserの回答には、読み取り専用ファイルの保存に関する詳細が含まれています。

ファイルを保存したら、次を実行します。

$ source ~/.bashrc

もう同じ問題に直面することはありません。

于 2016-04-29T13:33:48.837 に答える
15

Debian (または Debian フォーク) を使用している場合は、次を使用してロケールを追加できます。

dpkg-reconfigure locales
于 2013-01-27T16:16:39.820 に答える
10

エラーは明らかに、ロケールを使用しようとしていることを示しています。

>>> locale.setlocale(locale.LC_ALL, 'de_DE')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/locale.py", line 581, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting

locale.Error: サポートされていないロケール設定です

利用可能な設定を確認するには、 locale -a

deb@deb-Latitude-E7470:/ambot$ locale -a
C
C.UTF-8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
POSIX

その中の1つを使用できるように、

>>> locale.setlocale(locale.LC_ALL, 'en_AG.utf8')
'en_AG.utf8'
>>> 

為にde_DE

このファイルは、手動で調整するか、ツール update-locale を使用して更新できます。

update-locale LANG=de_DE.UTF-8
于 2019-11-14T06:27:18.960 に答える
6

Arch Linuxでは、実行することでこれを修正できましたsudo locale-gen

于 2013-02-22T22:51:58.970 に答える
3

Dockerfileの上に置きENVます。

# make the "en_US.UTF-8" locale so postgres will be utf-8 enabled by default
RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* \
    && localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8

ENV LANG en_US.UTF-8
于 2018-03-15T11:42:49.010 に答える
2
  • このコマンド localeを実行して、使用されているロケールを取得します。そのような:

LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE=zh_CN.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=

  • ファイルの最初のステップで、リストされているロケール リストを検索し/etc/locale-genます。使用済みのものへのコメントを外す
  • を実行locale-genして、新しく追加されたロケールを生成します
于 2016-08-07T04:24:20.367 に答える