我在新 PC 上安装了 OpenSuse Tumbleweed,而不是我已经熟悉了 25 年的 Debian。
现在,我遇到了 UTF-8 问题,例如,当我cat some_file
包含 UTF-8 编码的 Unicode 字符时,我看到一些垃圾,而且输入法也无法正常工作。
为了解决这些问题,例如,我可以启动一个 XTerm LANG=C.utf8 xterm
,在新的 XTerm 中一切都很好。
我想做的是将我的设置LANG
为C.utf8
全局,但我找到的每一个(每一个)指南都只是解释如何使用 Yast 来执行任务,并且 Yast 列出了数十种不同的语言,但没有C
.
配置文件/etc/sysconfig/language
有100多行,我觉得很混乱,而且我不是特别有信心修改它是正确的地方。
我该如何LANG=C.utf8
永久使用 Yast 或不使用 Yast?
答案1
使用localectl(1)
:
localectl set-locale LANG=C.UTF-8
从命令的手册页:
localectl 可用于查询和更改系统区域设置和键盘布局设置。
系统区域设置控制用户登录前系统服务和 UI 的语言设置(例如显示管理器)以及用户登录后的默认设置。
LANG
此命令将在您的/etc/locale.conf
文件中更改。从手册页locale.conf(5)
:
/etc/locale.conf 文件配置系统范围的区域设置。它由 systemd(1) 在早期启动时读取。
请注意,您需要重新启动系统才能使此更改生效,因为您的窗口管理器和服务已使用旧区域设置启动。
答案2
事实上,蛮力有时会有所帮助。我已经“grepped”到我的主目录中的所有文件中,LANG=
并在我发现的大量垃圾中
$ find . -type f -print0 | xargs -0 grep LANG= 2>/dev/null
...
./.config/plasma-localerc:LANG=C
...
$
我将其更改为LANG=C.utf8
(小写,无破折号),注销并登录,现在我是一个快乐的人。
因此,在系统级别,例如传播到新用户,您必须修改/etc/locale.conf
,其内容必须是LANG=C.utf8
(小写,无破折号),并且对于图形等离子 shell 的用户,其LANG
环境变量不同于系统范围默认,要修改的文件是~/.config/plasma-localerc
.