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

我该怎么解决呢?


当前回答

在Debian上,经过大量搜索,这个方法奏效了。

第一:

sudo apt-get purge locales

然后:

sudo aptitude install locales

还有著名的:

sudo dpkg-reconfigure locales

这消除了系统的区域设置,然后重新安装区域设置,并将libc6从2.19降级到2.13,这就是问题所在。然后它再次配置区域设置。

其他回答

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

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

解决方案是:

sudo locale-gen ro_RO.UTF-8

如果您在CentOS中运行chroot,请尝试手动将有此问题的帐户的/usr/lib/locale复制到chroot环境。

perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_ALL to default locale: No such file or directory

解决方案:

试试这个(uk_UA。UTF-8是我当前的语言环境。编写语言环境,例如en_US。utf - 8 !)

sudo locale-gen uk_UA.UTF-8

这。

sudo dpkg-reconfigure locales

问题的根源

我经历过,通过ssh从一台机器登录到另一台机器。远程机器没有本地机器上的locale文件。您可以禁用区域设置从本地机器转发到远程机器(在文件/etc/ssh/sshd_config中删除AcceptEnv LANG LC_CTYPE…)或安装区域设置(在本例中不需要更改它)。

安装

我使用的Fedora、Red Hat Linux和CentOS

sudo dnf install langpacks-de

德语(de)语言包。我登出,登陆,成功了。

搜索使用的其他langpacks

dnf search langpacks-

改变/激活

列出我使用的可用区域设置

localectl list-locales

并设置一个新的

sudo localectl set-locale de_DE.utf8

如果在通过ssh连接到远程主机时发生此问题,则可能是远程系统缺少某些区域设置。我不打算重复如何安装和配置区域设置,因为其他答案已经很好地解释了这一点。

正如其他答案所指出的,ssh应该将本地计算机的区域设置传递给远程主机。例如,如果你设置了澳大利亚地区(例如en_AU.UFT-8),并且你正在连接到一个新设置的Ubuntu服务器,它只提供en_US。UTF-8,那么您将收到此警告。

要解决这个问题,你有几个选择:

在远程主机上安装所需的区域设置,使它们与客户端上配置的区域设置匹配。 将SSH配置更改为不传递客户端环境变量。我不建议这样做。 通过从.bashrc文件和朋友导出语言环境设置来覆盖远程机器上的语言环境。