我使用XVI32 (十六进制编辑器)来获取欧元符号的十六进制表示,它给出的值是80。
另一个网站:http://www.string-functions.com/string-hex.aspx也做了同样的事情。
我不能理解为什么十六进制表示是80而不是0x20AC。这个0X80给出了128的十进制,如果我使用Alt+0128,它实际上会生成欧元符号。
谁能解释一下从字符串到十六进制转换背后的逻辑是什么?
谢谢
发布于 2011-01-10 00:57:09
字符编码(或字符集)将字符映射到字节值序列。您的字符集是windows-1252,它将欧元符号编码为单个十六进制字节0x80 (正如Oded所说,这是十进制的128 )。每个字符集对非ASCII字符进行不同的编码;关于0x80,没有什么本质上的“正确”或“错误”。
发布于 2011-01-10 00:49:33
十进制的128等于十六进制的80。
edit: 0x20AC将是十进制的8364。
根据this页面的说法,128对于UTF-8 (或任何其他unicode)是不正确的,但对于windows-1252 ( iso-8859-15也有,尽管别处也有)。
通常,如果你在Windows上使用一个标有欧元符号的键盘按键,那么原始的二进制八位数128就是你实际生成并插入到文件中的内容……如果文档附带了指定数据映射到相关字符的编码的信息,则这种方法在形式上是正确的。这将分别意味着windows-1252或iso-8859-15编码,它们应该在HTTP头中指定。
发布于 2015-08-12 19:38:21
Unicode在编码字符方面出现得很晚(大约在1992-93年间)。在此之前,OEM使用其特定的编码。在Windows环境中,您有许多特定于区域设置的编码。因此,根据Windows: Western的窗口编码,对于欧元,您将得到0x80。然而,Unicode涵盖了BMP的货币符号块(从U+20A0到U+20CF)中的所有货币符号。因此,根据Unicode,您可以使用U+20AC表示欧元货币符号,而根据Windows编码,您可以使用0x80表示欧元货币符号。
要查看不同之处,请在windows计算机上打开charmap.exe并检查高级视图。从字符集中选择Windows: Western。在这里,您将看到原因。
https://stackoverflow.com/questions/4640354
复制相似问题