答案 0 :(得分:1)
这与汇编语言无关,与UTF-8(终端所期望的)与ISO-8859-1(拉丁语1)或Windows 1252(IDK)扩展的8位字符无关设置您似乎从中查找代码的位置。如果您使用char array[]
中的那些字节编写了一个C程序并使用了stdio puts
,那将是相同的。
正如@Fuz所说,“Á没有ASCII码。” ASCII仅包含来自0..127的字符(低32个字符不可打印)http://www.asciitable.com/。 扩展 -ASCII 8位字符集与0到127的代码点仅与UTF-8重叠。
任何进行write()
系统调用以将0x90
字节写入stdout的程序都将执行相同的操作,而不管它是用哪种语言编写的。(使用strace ./program
查看怎么做,或将其传送到hexdump -C
中)。例如,在bash中运行printf '\x90\n'
以执行完全相同的操作。 90 0a
不是有效的UTF-8多字节序列,因此您的终端会打印一个字形(菱形中的a?)。
您可以将gnome终端设置为ISO-8859-1或Windows 1252 (右键单击并使用下拉菜单,或者找到菜单项)。我正在使用konsole
,它确实支持两种非UTF-8字符编码。
如果这样做,您可能只想在该终端中设置export LANG=en_US
(而不是通常的en_US.UTF-8
),因此其他程序将继续正常运行。
或者en_CA
或您实际使用的任何语言环境,只需使用非UTF-8版本即可,man
的线条画就可以使用,全屏文本内容也可以使用gdb
的TUI layout reg
模式,或jed
之类的编辑器。