Debian 认为我的文件系统编码为 ISO-8859-1

Debian 认为我的文件系统编码为 ISO-8859-1

这可能不是解决这个问题的合适网站,因为它更多的是投诉而不是问题,但这里是。

今天我将计算机从 Mint 15 更新到 Debian 7.6。完成此操作后,我的计算机认为所有现有文件名都编码为 ISO-8859-1 而不是 UTF-8。因此,例如,包含“à”的文件名现在显示为“à”等。
原来我需要告诉我的系统明确地export LANG=en_US.UTF-8通过放入我的 .bashrc 文件,文件系统使用 UTF-8 。

问题是,为什么?为什么在 2014 年这个时代有必要做这样的事情呢?显然,Mint 的默认值是 UTF-8;为什么 Debian 应该有所不同?是什么导致 Debian 使用如此晦涩且过时的默认设置,即使我在安装时告诉它我想要的区域设置是什么,并且 /etc/locale.gen 仅包含en_US.UTF8 UTF8作为唯一(未注释的)行。我是否需要记住为从现在开始创建的每个新用户帐户编辑 .bashrc 文件以编辑导出行?

答案1

Debian 上的默认语言环境是UTF-8编码,至少从喘息开始(我不记得它是什么时候切换的)。因此您在安装过程中一定选择了一些非默认设置。

将导出LANG=en_US.UTF-8放入我的 .bashrc 文件中。

那是行不通的,因为.bashrc是错误的文件。此处定义的环境变量仅适用于从终端启动的程序。

定义此环境变量的正确位置是/etc/environment使其成为系统设置或~/.pam_environment每用户设置。两个文件都是登录时阅读(通过所有登录方法)。

具体的语言环境变量对于字符编码是LC_CTYPE.设置LANG设置所有设置,LC_COLLATE包括可能会产生令人惊讶的后果。你应该只设置LC_CTYPE.

LANG因此,从您的设置中删除.bashrc并添加LC_CTYPE=en_US.utf8它所属的位置,即在/etc/environment或中~/.pam_environment

答案2

首先,我很惊讶您能够将 Mint 15 更新到 Debian 7.6。它们毕竟是不同的发行版。

我假设 Debian 决定使用 ISO 8859.1,因为您位于欧洲,并回答了一些有关区域设置的问题。

答案3

我是否需要记住为从现在开始创建的每个新用户帐户编辑 .bashrc 文件以编辑导出行?

在这种情况下,最好的想法是将其放入系统范围的文件中;首先检查它是否已经被设置在某处:

grep -R LANG /etc

您可能想也可能不想更改那里的任何内容。

吉尔斯的回答可能有最有效的地方来设置它,但我将在这里留下部分内容来解释他所说的“在登录时读取(通过所有登录方法)”的含义。

您可以创建一个ZZ-local.sh文件并将其放入/etc/profile.d.当用户登录时,那里的文件按字典顺序获取,因此ZZ应该覆盖以前的任何内容。该文件不需要可执行或包含 shebang,因此一行export LANG=...应该没问题。

一些 GUI 登录显示管理器阅读——例如,lightdm(您可能已经注意到与此相关的热门内容.profile之一;lightdm在 init 脚本中导出)。如果是这种情况,您将需要执行与刚刚描述的 WRT 相同的操作,但对于.事实上,以下几点并没有什么坏处:grep$LANG/etc/profile.d/etc/X11/Xsession.d

ln -s /etc/profile.d/ZZ-local.sh /etc/X11/Xsession.d/ZZ-local

对两个文件进行符号链接。请记住,这可能意味着它将连续两次获得来源,尽管如果您所做的只是设置$LANG,那也没关系。

相关内容