这与汇编语言无关,而且与UTF-8(您的终端期望)相比,与ISO-8859-1(latin-1)或Windows 1252(IDK)扩展的8位字符集有关好像在寻找代码。如果您在char array[]
中使用这些字节编写了一个C程序并使用了stdio puts
,那将是相同的。
正如@Fuz所说,“Á没有ASCII代码。” ASCII仅包括0..127(低32不可打印)http://www.asciitable.com/中的字符。扩展ASCII 8位字符集仅与UTF-8重叠,用于0到127之间的代码点。
任何使write()
系统调用将一个0x90
字节写入stdout的程序都会做同样的事情,无论它是用什么语言编写的。(使用strace ./program
查看你的工作,或将其传输到hexdump -C
)。例如,在bash中运行printf '\x90\n'
来做同样的事情。 90 0a
不是有效的UTF-8多字节序列,因此您的终端会打印一个 字形(钻石中的一个?)。
您可以将您的gnome-terminal设置为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
。