当我运行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,这就是问题所在。然后它再次配置区域设置。

其他回答

导出变量

$ 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。如果通过选择所有区域设置来运行此操作,则需要一些时间来配置。

问题的根源

我经历过,通过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

你的操作系统不知道en_US.UTF-8。

你没有提到具体的平台,但我可以重现你的问题:

% uname -a
OSF1 hunter2 V5.1 2650 alpha
% perl -e exit
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LC_ALL = (unset),
    LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

我猜您使用ssh从一台新的桌面计算机连接到这台较旧的主机。通常在/etc/ssh/sshd_config中包含

AcceptEnv LANG LC_*

它允许客户端将这些环境变量的值传播到新的会话中。

如果你不需要完整的区域设置,警告会提示你如何压制它:

% env LANG=C perl -e exit
%

或与Bash:

$ LANG=C perl -e exit
$ 

要想永久解决问题,请选择其中之一

在旧的主机上,在shell的初始化文件中设置LANG环境变量。 在客户端修改环境,例如,使用命令LANG=C ssh hunter2而不是ssh hunter2。 如果您拥有管理员权限,可以通过注释掉本地/etc/ssh/ssh_config文件中的SendEnv LANG LC_*行来阻止ssh发送环境变量。(多亏了这个回答。有关更多信息,请参阅OpenSSH中的Bug 1285。)

对于Debian用户,我在修改我的区域设置以更改机器的语言后遇到了这个问题。这就是我所做的:

修改. bashrc: 出口LANG = fr_FR。utf - 8 出口LC_ALL = fr_FR。utf - 8 取消注释行fr_FR。文件etc/locale中的UTF-8。Gen -> sudo locale-gen生成丢失的包 sudo update-locale sudo dpkg-reconfigure locale将我的locale配置为fr_FR。utf - 8 在etc/default/locale文件中添加额外的行: 语言= en_US。utf - 8 LC_ALL = en_US。utf - 8 LANG = en_US。utf - 8 LC_TYPE = en_US。utf - 8 重启我的电脑,一切正常

以下是如何在Mac OS X v10.7 (Lion)或Cygwin (Windows 10)上解决这个问题:

在主机上的bashrc或bash_profile文件中添加以下代码行:

# Setting for the new UTF-8 terminal support in Lion
export LC_CTYPE=en_US.UTF-8
export LC_ALL=en_US.UTF-8

如果你使用Z shell (zsh),编辑文件zshrc:

# Setting for the new UTF-8 terminal support in Lion
LC_CTYPE=en_US.UTF-8
LC_ALL=en_US.UTF-8