linux - Perl 无法设置语言环境,即使它已安装

标签 linux perl locale

我在 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/

相关文章:

c - gettext : in-memory translation 的效率

linux - 如何仅为特定应用程序更改核心模式?

linux - 是否可以将字符串发送到 docker 容器内的运行进程中?

ruby-on-rails - 如何在 Ubuntu 上使用 gem 安装 Rails

Android numberDecimal,考虑 xml 布局中的语言环境

android - 更改抽屉导航项目的语言环境

linux - grep 在第一列中搜索数据

json - 使用 perl 将 JSON::PP::Boolean 转换为 0,1 的正确且简单的方法

perl - Perl 脚本中的 'at compile-time' 是什么意思?

perl - Template::Tookit,自动在html源中显示模板名称