十六进制代表欧元符号€

Rah*_*hul 9 character-encoding euro

我使用XVI32(十六进制编辑器)来获取欧元符号的十六进制表示,它给我的值为80.
另一个站点:http://www.string-functions.com/string-hex.aspx也是如此.
我无法理解为什么十六进制表示是80而不是0x20AC.这个0X80给出十进制128,如果我使用Alt + 0128它实际上产生欧元符号.

有人可以说明从字符串到十六进制转换的转换背后的逻辑吗?

谢谢

dka*_*arp 8

字符编码(或字符集)将字符映射到字节值序列.你的charset是windows-1252,将欧元符号编码为单个十六进制字节0x80(十进制为128,如Oded所说).每个字符集不同地编码非ASCII字符; 关于0x80,没有什么从根本上"正确"或"错误".


Ode*_*ded 3

十进制的 128 是十六进制的 80。

编辑:0x20AC 十进制为 8364。


根据页面,128 对于 UTF-8(或任何其他 unicode)来说是不正确的,但对于 windows-1252 来说是正确的(iso-8859-15 也有它,尽管在其他地方)。

通常,如果您在 Windows 上使用标有欧元符号的键盘键,则原始八位字节 128 就是您实际生成并插入到文件中的内容......如果文档附带以下信息,则这种方法在形式上是正确的:指定数据映射到相关字符的编码。这意味着,应分别在 HTTP 标头中指定 windows-1252 或 iso-8859-15 编码。