这个问题与我的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.ascii
or iso-8859-1
。
默认情况下,该LANG
变量en_US.UTF-8
在我的终端窗口中运行的所有 shell 中都设置为,但我没有故意在任何配置文件中设置它。
这发生在xterm
、rxvt
和下,据我所知,urxvt
这些程序都没有配置为使用。UTF-8
我正在跑步XFCE4
,如果这有什么不同的话。我在设置中也找不到任何设置XFCE4
。
谁能建议一种方法来重置我的系统,以便所有终端窗口始终显示us.ascii
or iso-8859-1
,并且所有键盘输入也是us.ascii
or iso-8859-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 函数):
(如果要对远程端点强制执行严格的 US-ASCII,请替换
ISO 8859-1
为ASCII
。)随意命名。
ssh
使用旧字符编码连接到系统时,请使用此脚本/函数而不是常规命令。