为什么我在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。我用的是Ubuntu 11.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

当前回答

把它放在ENV上面的Dockerfile中。

# 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

其他回答

首先,通过以下步骤确保你已经安装了语言包:

sudo apt-get install language-pack-en-base


sudo dpkg-reconfigure locales

如果我是你,我会使用BABEL: http://babel.pocoo.org/en/latest/index.html

我有同样的问题在这里使用Docker,我已经尝试了每一个步骤,并没有很好地工作,总是得到区域错误,所以我决定使用BABEL,一切都工作得很好。

在Arch Linux上,我可以通过运行sudo locale-gen来解决这个问题

python寻找.UFT-8,但你可能有.utf8 尝试使用sudo dpkg-reconfigure locale安装.UFT-8包

只需打开.bashrc文件并添加这个

出口LC_ALL = C

然后在终端中输入source .bashrc。