我一直试图将我的区域设置设置为但en_US.UTF-8
没有成功。根据互联网上的其他答案,我应该首先使用以下命令生成区域设置
sudo locale-gen en_US.UTF-8
然后应用它
sudo dpkg-reconfigure locales
然而,跑步locale-gen
会发生一些奇怪的事情:
user@Host /home/user $ sudo locale-gen en_US.UTF-8
Generating locales (this might take a while)...
en_US.ISO-8859-1... done
Generation complete.
正如您所看到的,它实际上从未生成 UTF-8,而是不断回退到 ISO-8859-1。我永远无法设置LC_ALL
为en_US.UTF-8
,可能是因为它无法生成。
难道我做错了什么?我正在运行 Debian 8.1。
答案1
您已尝试在 Debian 下应用 Ubuntu 的配方。这通常有效,但在这种特殊情况下却不起作用。
Ubuntu 源自 Debian,除了安装程序和 GUI 之外没有太大变化。该locale-gen
命令是它改变的少数其他内容之一。我不知道为什么。
在 Debian 下,该locale-gen
命令不带任何参数,并根据配置的区域设置列表重新生成编译的区域设置定义。要修改要使用的区域设置的选择,请编辑该文件,/etc/locale.gen
然后运行locale-gen
命令。或者,dpkg-reconfigure locales
以 root 身份运行,选择所需的其他区域设置(并取消选择不需要的区域设置),然后按“确定”。
在 Ubuntu 下,如果运行locale-gen
不带参数的命令,它将根据配置的区域设置列表重新生成编译的区域设置定义。但是,如果您传递一些参数,它们将被添加到列表中并立即生成。区域设置列表保存在/var/lib/locales/supported.d/local
.运行dpkg-reconfigure locales
只是重新生成已编译的语言环境,而不给您修改选择的机会。
总之,要添加en_US.UTF-8
到可用区域设置列表中:
- Debian,交互式:
dpkg-reconfigure locales
- Debian,自动化:
sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen && locale-gen
- Ubuntu,自动化:
locale-gen en_US.UTF-8
答案2
在实际阅读了 locale-gen 的 man 文件而不是盲目信任互联网之后,我发现locale-gen
实际上需要从/etc/locale.gen
.通过取消注释en_US.UTF-8
,我成功地生成了它。