无法生成 en_US.UTF-8 区域设置

无法生成 en_US.UTF-8 区域设置

我一直试图将我的区域设置设置为但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_ALLen_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,我成功地生成了它。

相关内容