linux 内核实现的 tty 是否总是使用 UTF-8 呈现数据?

linux 内核实现的 tty 是否总是使用 UTF-8 呈现数据?

看来是这样。我读IUTF8,但文档只说它允许您在进行行编辑时将输入处理为 UTF-8。

但是输出呢?如果您使用 GUI 终端,它通常允许您更改编码以在 pty 的输出缓冲区中呈现字节,但是内核实现的 tty 又如何呢?

Linux 是否总是使用 UTF-8 渲染 tty 输出缓冲区中的字节?

答案1

“Linux”本身并不这样做。应用程序(包括但不限于终端仿真器)可以这样做,也可以不这样做。

Linux 控制台终端是一个终端仿真器,可能会也可能不会解释 UTF-8。请参阅console_codes(4)手册页以获取更多信息。那应该列出用于切换的控件输出字符集,例如,

   ESC %              Start sequence selecting character set                
   ESC % @               Select default (ISO 646 / ISO 8859-1)              
   ESC % G               Select UTF-8                                       
   ESC % 8               Select UTF-8 (obsolete) 

但看到页面上的最终评论对应的是这个变化2006年,怀疑转换为网页格式丢失了一些文本。 另一个网站提供了更完整的表示(尽管该网站也存在上述问题这里)。

如果你真的想手册页,您的本地计算机可能比任何一个都做得更好......

您可以使用以结尾的序列关闭/打开 UTF-8 模式@或者G, 分别。我偶尔使用这个脚本来做到这一点:

#!/bin/sh
# send character-string to enable UTF-8 mode
if test ".$1" = ".off" ; then
        printf '\033%%@'
else
        printf '\033%%G'
fi

(并对此发表评论,有人提醒,有一个脚本可以做到这一点,这是一个年纪大一点比我的脚本)。

相关内容