unicode – EM Dash#151之间有什么区别?和#8212 ;?

我有一个ASCII文件,其中包含一个EM Dash( – 或在HTML中的—)。十六进制值为0x97。当我们通过这个文件通过一个应用程序,它到达为UTF-8,它将字符转换为0xC297,这是—在HTML中。但是,当我们通过这个文件通过不同的应用程序,它将字符转换为0xE28094或—。

什么会导致这些应用程序不同地转换这些字符?这可能是一个代码页设置?

—是错的。当使用数字字符引用时,数字指的是Unicode代码点。对于低于256的数字,与ISO-8859-1中的码点相同。在8859-1中,字符151在“C1控制代码”之中,而不是破折号或任何其他可见字符。

混乱的出现是因为字符151是Windows代码页1252(西欧)中的破折号。许多人认为cp1252与ISO-8859-1是一样的,但实际上它不是:C1范围(128到159)中的字符是不同的。

第一个应用程序正在读取您的“ASCII”文件*作为ISO-8859-1,但实际上它可能是cp1252,你将需要一个方法来提示应用程序的期望什么编码。

(*:如果文件中存在顶级位字符,“ASCII”是一个不正确的名称。您可能是指“ANSI”,这实际上也是一个不正确的名词,但在Windows世界中,在当前系统默认代码页“)。

http://stackoverflow.com/questions/631406/what-is-the-difference-between-em-dash-151-and-8212

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:unicode – EM Dash#151之间有什么区别?和#8212 ;?