我在 Linux 系统 (Ubuntu) 上运行 Perl 时遇到问题:
user@Box:~$ perl -e exit
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "en_US:en",
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LANG = "en_DK.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_DK.UTF-8").
谷歌搜索表明,这通常与引用缺失语言环境的环境变量有关,但是所有语言环境似乎都存在:
user@Box:~$ locale -a
locale: Cannot set LC_CTYPE to default locale: No such file or directory
C
en_DK.utf8
en_GB.utf8
en_US
en_US.iso88591
en_US.utf8
POSIX
我已经尝试安装所有 en,但似乎没有任何影响。
最佳答案
在写问题的同时找到了答案:
罪魁祸首是 LC_CTYPE=UTF-8
,它显然在 macOS 中完全有效(Perl 会在那里接受它),但在 Linux 上则不然。为避免这种情况,可以按如下方式覆盖 LC_CTYPE
:
root@Box:~# update-locale LC_CTYPE=en_US.UTF-8
退出并重新登录后,Perl 将不再报错。
user@Box:~# perl -e 'print "Hack the Planet!\n"'
Hack the Planet!
关于linux - Perl 无法设置语言环境,即使它已安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49089099/