我对 Ubuntu 13.10 相当恼火。我需要修复服务器上的区域设置,否则我会看到类似这样的垃圾信息:
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 the standard locale ("C").
网上大多数修复都指出添加
export LC_ALL=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8
export LANG=en_US.UTF-8
到.bashrc.bash_login 应该可以解决这个问题。
有人提到从以下命令运行:
$ sudo locale-gen en_US en_US.UTF-8
$ dpkg-reconfigure locales
应该也会有帮助。我还尝试了上述所有方法,并重启了服务器。
当我通过终端 SSH 进入该服务器时,它似乎可以工作,但是当我从 capistrano 运行远程部署脚本时,我的输出中仍然会出现 Perl 错误。
我认为这正是 .bash_login 中的导出应该修复的问题。
我甚至尝试过跑步
apt-get install language-pack-en-base
什么都没起作用!
答案1
几点说明:
- 系统范围的区域设置存储在 中
/etc/default/locale
。 - 设置所有的 LC_ALL、LC_CTYPE 和 LANG 是没有意义的。
更简洁的解决方案是/etc/default/locale
只让
LANG=en_US.UTF-8
并将这些条目放入/etc/bash.bashrc
。
答案2
我添加了
export LC_ALL=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8
export LANG=en_US.UTF-8
代码片段改为 /etc/bash.bashrc,问题就解决了。
我怀疑调用 locale-gen、dpkg-reconfigure 和安装 language-pack-en-base 是否必要。
答案3
我locale-gen en_US.UTF-8
以 root 身份执行并且效果很好。