我对字符集、编码等方面的知识存在差距。在Windows-1252和ISO/IEC 8859-15 (Latin-9) 代码页中,欧元符号 (€) 的值以 0x20AC 形式给出——十进制是8364!但是,当这种编码中的任何字符都必须适合单个无符号字节(即最大值可以是 255)时,这怎么可能呢?US-ASCII 占用值 0-127,而 128-255 是不同字符编码之间变化的地方。
当我将文本输入文本编辑器(vim)时:
a € b
并将其保存到编码为“latin9”的文件中。我看到这个文件包含以下字节:
$ xxd euro-file.txt
0000000: 6120 e282 ac20 620a a ... b.
好的,所以:
0x61 = 'a' character
0x20 = space character
0xE282 = ???
0xAC20 = This is the value of the Euro symbol, but the bytes are backwards; the reference said the value should be 0x20AC
0x62 = 'b' character
有人可以解释一下欧元字符如何具有高于 255 的值吗?为什么欧元字符的写入字节是向后的(0xAC20 而不是 0x20AC)?