当我运行perl时,我得到警告:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

我该怎么解决呢?


当前回答

在我的例子中,这是输出:

LANGUAGE = (unset),
LC_ALL = (unset),
LC_PAPER = "ro_RO.UTF-8",
LC_ADDRESS = "ro_RO.UTF-8",
....

解决方案是:

sudo locale-gen ro_RO.UTF-8

其他回答

我有多个用户使用不同的外壳,所以在我的情况下,这解决了:

检查哪个外壳 echo $ 0 如果bash #设置locale\nLC_CTYPE=en_US. utf -8\nLC_ALL=en_US. utf -8UTF-8" >> .bashrc 如果zsh #设置locale\nLC_CTYPE=en_US. utf -8\nLC_ALL=en_US. utf -8UTF-8" >> .zshrc

向~/添加正确的区域设置。bashrc,(~ /。Bash_profile, /etc/environment之类的文件可以解决这个问题,但是不建议这样做,因为它会覆盖/etc/default/locale的设置,这在最好的情况下是令人困惑的,在最坏的情况下可能会导致区域设置不一致。

相反,应该直接编辑/etc/default/locale,它可能看起来像这样:

LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE=en_US

更改将在下次登录时生效。你可以通过/etc/default/locale在现有的shell中获取新的语言环境,就像这样:

$ . /etc/default/locale

一如既往,细节决定成败。

在Mac OS X v10.7.5 (Lion)上,要修复一些Django错误,请在我的~/。bash_profile我已经设置:

export LANG=en_EN.UTF-8
export LC_COLLATE=$LANG
export LC_CTYPE=$LANG
export LC_MESSAGES=$LANG
export LC_MONETARY=$LANG
export LC_NUMERIC=$LANG
export LC_TIME=$LANG
export LC_ALL=$LANG

在很长一段时间里,我在使用Perl时都得到了这样的警告。

我的坏!我后来才意识到,我的系统是en_US.UTF-8! 我只是通过改变

export LANG=en_EN.UTF-8

to

export LANG=en_US.UTF-8

这通常意味着您还没有正确地在Linux机器上设置区域设置。

在Debian或Ubuntu上,这意味着你需要去做

$ sudo locale-gen
$ sudo dpkg-reconfigure locales

另参见man locale-gen。

将缺失的地区添加到.bash_profile文件中:

echo "export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8">>~/.bash_profile

然后来源你的.bash_profile文件:

source ~/.bash_profile