我最近从 OpenSuSE 切换到 Arch Linux。名称中包含 unicode 字符的文件过去显示正常,但切换后我只得到 mojibake。例如,在我的音乐库中,Queensrÿche 显示为 Queensrÿche。
这也发生在控制台上。
我堆积到一个相关主题在 Arch Linux 论坛中,但没有得到答案。
答案1
您的语言环境可能配置不正确;最可能的原因是,即使文件名以 UTF-8 存储,您的终端(我猜是 Konsole)仍然需要传统的 ISO-8859-* 编码。
我不知道其余的部分,但这里有几个步骤可以确保基本配置正确。
此脚本也可能有帮助。
编辑
/etc/locale.gen
,确保您的首选.UTF-8
语言环境(例如en_US.UTF-8
) 未被注释。(默认情况下,Arch 不启用任何语言环境。)
跑步
locale-gen
如果尚未生成语言环境,则生成语言环境。(当前生成的语言环境由 列出
locale -a
。)编辑
/etc/locale.conf
并添加LANG=en_US.UTF-8
。(
LOCALE=
变量 in 的/etc/rc.conf
作用相同,但在某种程度上,它已被弃用,取而代之的是 locale.conf。)彻底退出,然后再次登录,以刷新环境变量。
运行
env | egrep '^(LANG|LC_)' | sort
以查看 shell 环境中的区域设置。跑去
tr \\0 \\n < /proc/$PPID/environ | egrep '^(LANG|LC_)' | sort
看终端的环境。两个命令应返回相同的输出。如果不是,则它们两个都值中至少必须包含“.UTF-8”
LANG
。(“.UTF-8”和“.utf8”可视为相同。)此外,两者都不命令应该列出LC_ALL
。