当前位置:  开发笔记 > 编程语言 > 正文

如何修复Perl的语言环境设置警告?

如何解决《如何修复Perl的语言环境设置警告?》经验,为你挑选了19个好方法。

当我跑步时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").

我如何解决它?



1> Allen Bargi..:

以下是如何在Mac OS Lion(10.7)或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

如果您使用的是zsh,请编辑zshrc:

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


谢谢,我已经搜索了这个问题的解决方案很长一段时间了,我一直认为这是我的Ubuntu服务器配置中的问题,似乎没有解决方案有帮助(所有dkpg重新配置的东西(
谢谢,这在ZSH和Mac OS X El Capitan下的oh-my-zsh插件上运行良好,位于〜/ .zshrc的底部:LC_CTYPE = en_US.UTF-8 LC_ALL = en_US.UTF-8
因为`LC_ALL`会覆盖所有其他变量,所以我宁愿设置`LANG = de_AT.UTF-8`和各个变量,如`LC_MESSAGES = en_US.UTF-8`.如果未设置变量,则返回"LANG".你也可以.`unset LC_CTYPE`强制它回退到`LANG`.
将这些行放在.bashrc中不起作用,但是bash_profile解决了它!我不得不创建文件.
将这些行放在`〜/ .bashrc`中为我解决了...然后必须使用`source~/.bashrc`重新加载...... Thnks <3
由于bash_profile仅由bash读取登录shell,因此该解决方案可能由于各种原因而失败(不是登录shell,不使用bash,也可能根本不从shell运行).最好更改`/ etc/default/locale`中的设置,这可以手动完成或使用`update-locale`完成.

2> Greg Bacon..:

你的操作系统不知道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
$ 

要获得永久性修复,请选择其中一个

    在较旧的主机上,LANG在shell的初始化文件中设置环境变量.

    在客户端修改您的环境,例如,而不是ssh hunter2使用命令LANG=C ssh hunter2.

    如果您具有管理员权限,请通过注释掉本地文件中的SendEnv LANG LC_*行来停止ssh发送环境变量.(感谢这个答案.有关更多内容,请参阅OpenSSH的Bug 1285.) /etc/ssh/ssh_config


我有这个问题很久了,...从sshd_config中删除"AcceptEnv LANG LC_*"终于解决了它.谢谢你的暗示!
@HermannIngjaldsson,至少在Ubuntu(12.10)上,没有必要重新启动服务器(在删除"AcceptEnv LANG LC_*"之后).我刚刚重新加载了ssh config:`service ssh reload`,这只需要几分之一秒,甚至不会导致当前的ssh会话终止.
谢谢!使用git连接到我的服务器时出现此错误消息.在使用`dpkg-reconfigure locales`添加de_CH.UTF-8(在那里不支持但在本地使用)之后,消息就消失了.
在客户端系统附加'export LC_ALL = C'然后'source~/.bashrc'解决问题.
@Greg Bacon,您是否也想要在系统范围内设置环境变量,例如创建/ etc/environment文件?https://help.ubuntu.com/community/EnvironmentVariables#System-wide_environment_variables
使用git并在与远程交互时遇到此错误的人的另一个选择是在客户端计算机上的`/ etc/ssh/ssh_config`中注释掉`SendEnv LANG LC_*`.
在sshd_config中注释掉"AcceptEnv LANG LC_*",在主机上擦除了我的bash历史记录:(所以在做那些人之前先想想!

3> 小智..:

如果使用debootstrap创建rootfs,则需要生成语言环境.你可以通过运行:

# (optional) enable missing locales
sudo nano /etc/locale.gen

# then regenerate
sudo locale-gen

这个提示来自,https://help.ubuntu.com/community/Xen


这对我来说是真正的解决方案.
locale-gen不带任何参数(至少在Debian中稳定).相反,编辑/etc/locale.gen以取消注释所需的语言环境,然后运行sudo locale-gen
在Debian上,您可能需要首先执行`$ echo en_US UTF-8 >>/etc/locale.gen`.
固定在“ Ubuntu服务器”上

4> Paul Tomblin..:

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

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

$ sudo locale-gen
$ sudo dpkg-reconfigure locales

另见man locale-gen.


这里没有解决问题
这在Ubuntu 14.04中对我有用,虽然我不得不首先用`sudo locale-gen es_UY.UTF-8添加缺少的语言环境.
dpkg-reconfigure locales - 修复了我的问题,debian 7.1
dpkg-reconfigure locales使用与首先尝试修复的perl语言环境错误消息相同的自身失败!!!!
@matteo仅在第一次修复错误之前.再试一次,它应该是固定的.

5> 小智..:

使用:

export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_TYPE=en_US.UTF-8

它适用于Debian.我不知道为什么 - 但是locale-gen没有结果.

重要!这是一个临时解决方案.它必须在每个会话中运行.


这个对我有用.我把它放到我的`.bashrc`文件中.
也为我工作过.我只需要设置Perl警告中未设置的两个设置(LANGUAGE和LC_ALL)
在Debian上,`local-gen`只处理在`/ etc/local.gen`中取消注释的语言环境.您可能需要首先执行`echo en_US UTF-8 >>/etc/locale.gen`.

6> Inder Kumar ..:

仅适用于macOS和Mac OS X用户

我在使用Git时得到了同样的警告

解决此警告取消选中Set locale environment variable on startup选项并重新启动终端.屏幕截图下方代表我的终端设置.

在此输入图像描述


我尝试了所有其他的但是这个为我做了.我使用iTerm,它具有相同的字符编码选项.
哇,这么简单,修复了我的问题!谢谢!
不幸的是,这打破了ZSH(标签停止工作)

7> jfreak53..:

它在Ubuntu中很简单.您必须从头开始生成Locales,从命令行运行以下命令:

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

这应创建语言环境,然后重新配置它们.



8> joscarsson..:

/etc/environment在Debian和Ubuntu上添加以下内容来修复我的问题(当然,修改以匹配您要使用的语言环境):

LANGUAGE=en_US.UTF-8
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
LC_TYPE=en_US.UTF-8


..我收到一条警告说不推荐在`/ etc/environment`中设置区域设置,而应该在`/ etc/default/locale`中设置.两者似乎现在都有效.

9> warvariuc..:

我现在用这个:

$ cat /etc/environment
...
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8

然后注销SSH会话并再次登录.

老答案:

只有这帮助了我:

$ locale
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE=en_US.UTF-8
LC_NUMERIC=ru_RU.UTF-8
LC_TIME=ru_RU.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=ru_RU.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8
LC_ADDRESS=ru_RU.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_MEASUREMENT=ru_RU.UTF-8
LC_IDENTIFICATION=ru_RU.UTF-8
LC_ALL=

$ sudo su

# export LANGUAGE=en_US.UTF-8
# export LANG=en_US.UTF-8
# export LC_ALL=en_US.UTF-8

# locale-gen en_US.UTF-8
Generating locales...
  en_US.UTF-8... up-to-date
Generation complete.

# dpkg-reconfigure locales
Generating locales...
  en_AG.UTF-8... done
  en_AU.UTF-8... done
  en_BW.UTF-8... done
  en_CA.UTF-8... done
  en_DK.UTF-8... done
  en_GB.UTF-8... done
  en_HK.UTF-8... done
  en_IE.UTF-8... done
  en_IN.UTF-8... done
  en_NG.UTF-8... done
  en_NZ.UTF-8... done
  en_PH.UTF-8... done
  en_SG.UTF-8... done
  en_US.UTF-8... up-to-date
  en_ZA.UTF-8... done
  en_ZM.UTF-8... done
  en_ZW.UTF-8... done
Generation complete.

# exit

$ locale
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8



10> tkjef..:

在经过多次搜索之后,在Debian上做到了这一点.

第一:

sudo apt-get purge locales

然后:

sudo aptitude install locales

和着名的:

sudo dpkg-reconfigure locales

这会解决语言环境系统,然后重新安装语言环境并将libc6从2.19降级到2.13,这就是问题所在.然后再次配置语言环境.


dpkg-reconfigure语言环境应该是所有需要的.在您尝试了100次并环顾互联网之后,这就是您所见过的所有问题仍然无法自行解决,请尝试以上操作.然后回来并提出这个问题.:)
`dpkg-reconfigure locales`就是所需要的.`sudo`如果你是sudo类型的人,或者以root身份执行.然后根据shell环境中的内容选择您的语言环境.

11> Alouani Youn..:

这是一个快速的答案。我们将设置重启后未设置的语言环境。首先打开bash文件并对其进行编辑:

nano .bashrc

将这些行添加到文件中:

export LC_ALL="en_US.UTF-8"
export LANG="en_US.UTF-8"
export LANGUAGE="en_US.UTF-8"

通过重新加载bash激活更改:

source ~/.bashrc

检测结果 :

locale



12> 小智..:

对于Ubuntu使用这个,

#export LANGUAGE=en_US.UTF-8
#export LC_ALL=en_US.UTF-8
#export LANG=en_US.UTF-8
#export LC_TYPE=en_US.UTF-8

为我工作.



13> 小智..:

如果您使用Mac OS X v10.10(Yosemite)或更高版本连接服务器Linux,则可以尝试这些步骤.

    保留文件/ etc/ssh/sshd-config原始文件

    穿上你的〜/ .bash_profile

    export LANG="en_US"
    export LC_ALL=$LANG.UTF-8
    

    dpkg-reconfigure locales
    

    并选择"en_US.UTF-8"



14> glarrain..:

您需要在适当的位置配置语言环境/etc/default/locale,注销,登录,然后运行常规命令

root@host:~# echo -e 'LANG=en_US.UTF-8\nLC_ALL=en_US.UTF-8' > /etc/default/locale
root@host:~# exit
local-user@local:~$ ssh root@host
root@host:~# locale-gen en_US.UTF-8
root@host:~# dpkg-reconfigure locales


这些步骤对我有用(Ubuntu服务器14.04).重点是注销并再次登录.

15> Thomas Jense..:
sudo nano /etc/locale.gen

取消注释要使用的语言环境(例如en_US.UTF-8 UTF-8):

然后运行:

sudo /usr/sbin/locale-gen

资料来源:http://people.debian.org/~schultmc/locales.html



16> bogdanvlviv..:
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



17> 小智..:

对我来说,我修复了这个错误编辑.bashrc文件添加导出.初步评论后添加.

添加语言支持.
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_TYPE=en_US.UTF-8

亲切的,



18> Nuvanda..:

添加正确的语言环境~/.bashrc,~/.bash_profile,/etc/environment和类似就能解决问题,但它是不推荐,因为它覆盖了从设置/etc/default/locale,这是最好混乱,并可能导致持续在最坏情况下被应用不是语言环境.

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

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

更改将在您下次登录时生效.您可以通过以下方式获取现有shell中的新语言环境/etc/default/locale:

$ . /etc/default/locale



19> Blago Eres..:

对于从MacOS High Sierra上的iTerm2.app连接到DigitalOcean或其他云托管提供商的任何人,并在某些命令上收到此错误:

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

这解决了我的问题:

在此输入图像描述

我知道这个线程很老但也许有人会觉得这很有用.我知道这有多烦人.

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有