另一个网站:http://www.string-functions.com/string-hex.aspx 也是这个值。
我不明白为什么它的十六进制表示是80而不是0x20AC。 这个 0X80 在十进制中是128,如果我使用 Alt+0128,它实际上会产生欧元符号。
请问有人能够解释一下这种字符串转换为十六进制的逻辑吗?
谢谢。
windows-1252
,它将欧元符号编码为单个十六进制字节0x80(如Oded所说,这是128)。每个字符集以不同的方式编码非ASCII字符;关于0x80没有什么根本上的“对”或“错”。十六进制中的80表示十进制中的128。
编辑:0x20AC在十进制中表示8364。
根据这个页面,128是UTF-8(或任何其他Unicode)的错误表示,但对于Windows-1252是正确的(ISO-8859-15也有它,但位置不同)。
通常,在Windows上使用标有欧元符号的键盘键,实际插入文件中的是原始八位字节128....如果文档附带指定数据映射到所需字符的编码信息,则此方法是正式正确的。这意味着分别应在HTTP标头中指定Windows-1252或ISO-8859-15编码。
Unicode在字符编码方面出现得比较晚(大约在1992-93年)。在此之前,OEM使用他们自己的特定编码。在Windows环境下,您有许多编码方式,针对不同的区域设置。因此,根据Windows: Western的编码方式,欧元符号的编码为0x80。然而,Unicode在BMP的货币符号块中涵盖了所有货币符号。因此,根据Unicode,欧元货币符号的编码为U+20AC,而根据Windows编码,则为0x80。
要查看区别,请在Windows计算机上打开charmap.exe并选择高级视图。从字符集中选择Windows: Western,您就会看到原因。
我猜在你的电脑(和那个网站)本地编码页是这样的,即代码128映射到欧元符号。 在我的电脑上,Alt+0128映射到希伯来字符Alef,因为它设置了不同的编码页。
您可以通过键入Unicode代码来查看欧元符号
javascript:alert("€".charCodeAt(0))
在您的浏览器地址栏中。
0x20AC 应该是正确的,因为欧元符号是(扩展)Unicode字符。
按下 Alt+0128 产生欧元符号与此无关(你可能在使用 Windows?这是 Windows 特有的事情)
0x80 或 128 不是有效的 HTML 代码(行为未定义):http://www.ascii.cl/htmlcodes.htm
阅读更多信息:http://www.cs.tut.fi/~jkorpela/html/euro.html