Encoding 在Win-1252和Latin9中,欧元符号字符的值如何高于0xFF?

Encoding 在Win-1252和Latin9中,欧元符号字符的值如何高于0xFF?,encoding,character-encoding,windows-1252,Encoding,Character Encoding,Windows 1252,我对字符集、编码等方面的知识还存在差距。在and(拉丁语-9)代码页中,欧元符号(€)的值表示为0x20AC——十进制为8364!但是,当这种编码中的任何字符都必须放入一个无符号字节(即最大值可以是255)时,这怎么可能呢?US-ASCII值为0-127,128-255是不同字符编码之间的差异 当我将文本输入文本编辑器(vim)时: 并将其保存到编码为“latin9”的文件中。我看到这个文件由以下字节组成: $ xxd euro-file.txt 0000000: 6120 e282 ac20

我对字符集、编码等方面的知识还存在差距。在and(拉丁语-9)代码页中,欧元符号(€)的值表示为0x20AC——十进制为8364!但是,当这种编码中的任何字符都必须放入一个无符号字节(即最大值可以是255)时,这怎么可能呢?US-ASCII值为0-127,128-255是不同字符编码之间的差异

当我将文本输入文本编辑器(vim)时:

并将其保存到编码为“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)?

该字符仅由其Unicode代码点表示,即U+20AC。它不表示拉丁语-9/CP1252编码表中的字节值。它只是以这种方式列出,大概是为了消除对哪个字符确切含义的歧义;Unicode表是一个非常好的规范参考

您正在运行的文件
xxd
显然是用UTF-8编码的,其中“€”是用字节
e282 AC
编码的


您可能想从这里开始:。

啊,您是对的,我没有在Vim中正确设置编码。感谢您提供的信息和帮助:)
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