当我运行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").

我该怎么解决呢?


当前回答

我在/etc/locale.conf上设置了LC_COLLATE=C。我简单地删除了这一行,因此只有LANG=en_US。设置了UTF-8(或等效的UTF-8),就不会再有问题了。

其他回答

这在Ubuntu中很简单。您必须从头开始生成locale,从命令行运行以下命令:

sudo locale-gen en_US en_US.UTF-8
sudo dpkg-reconfigure locales

这将创建区域设置,然后重新配置它们。

ssh默认覆盖LC区域变量。看到/etc/ssh/sshd_config:

AcceptEnv LANG LC_*

也许你需要在本地shell中设置这些变量。

导出变量

$ export LANGUAGE=en_US.UTF-8
$ export LC_ALL=en_US.UTF-8
$ export LANG=en_US.UTF-8
$ export LC_CTYPE=en_US.UTF-8

下一个运行

$ sudo locale-gen
$ sudo dpkg-reconfigure locales 

当您运行dpkg-reconfigure locale时,它会要求您选择locale,选择en_US。utf - 8。如果通过选择所有区域设置来运行此操作,则需要一些时间来配置。

向~/添加正确的区域设置。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

以下是接受的答案:

LANG=C ssh hunter2。

LC_ALL=C ssh hunter2

在客户端,我成功了。