在所有终端中禁用 utf-8?

在所有终端中禁用 utf-8?

这个问题与我的Ubuntu 18系统有关,如下...

% uname -a
Linux myhost.name.net 4.15.0-45-generic #48-Ubuntu SMP Tue Jan 29 16:28:13 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

我不知道在我的定期系统升级过程中以下情况已经持续了多久,但我现在注意到我所有的终端窗口都在写UTF-8字符。我希望使用us.ascii(或可能iso-8859-1)所有终端窗口。我找不到任何地方设置这个。

此外,所有键盘输入似乎都是作为UTF-8,我也希望它是us.asciior iso-8859-1

默认情况下,该LANG变量在我的终端窗口中运行的所有 shell 中设置为en_US.UTF-8,但我并没有在任何配置文件中故意设置它。

据我所知,这发生在xtermrxvt和下urxvt,并且这些程序都没有配置为利用。UTF-8

我正在跑步XFCE4,如果这有什么区别的话。我在XFCE4设置中也找不到这方面的任何设置。

任何人都可以建议一种方法来重置我的系统,以便所有终端窗口始终显示us.asciior iso-8859-1,并且所有键盘输入也是us.asciior iso-8859-1

非常感谢。

答案1

您找不到任何特定设置,因为绝大多数现代 Linux 软件决定了语言环境环境变量使用的字符集。使用该locale命令查看完整的当前区域设置。

你检查了吗/etc/default/locale?它是用于设置系统默认区域设置的标准 Debian 配置文件。如果您想使用 iso-8859-1 而不是 UTF-8,您应该:

  • 确保该en_US ISO-8859-1行未注释掉,/etc/locale.gen并在编辑文件后运行sudo locale-gen(如果不是)
  • LANG将语言环境变量(或至少LC_CTYPE)指定为en_US.iso88591(或根据 的任何正确形式locale -a | grep en_US

如果问题是您从 Ubuntu 18 UTF-8 系统连接到使用 ISO-8859-1 而不是 UTF-8 的旧系统,您可以考虑在传出连接上插入字符映射层,而不是降级整个系统系统来处理遗留编码。制作一个小脚本(或 shell 函数),如下所示:

#!/bin/sh
luit -encoding 'ISO 8859-1' ssh "$@"

(如果您想对远程端点强制执行严格的 US-ASCII,请替换ISO 8859-1ASCII。)

随意命名。ssh使用旧字符编码连接到系统时,请使用此脚本/函数而不是常规命令。

相关内容