JSP 中的特殊字符表示问题

Special characters representation issue in JSP

在JSP文件中,源代码为

|&#x0031;&#x0080;&#x0033;|<%="\u0031\u0080\u0033" %>|

页面上的结果是:

|1€3|13|

为什么欧元符号的表示方式不同?

0x80–0x9F 范围内的 HTML 数字字符引用实际上并不对应字符 U+0080–U+009F。相反,它们引用从 windows-1252 编码映射到字节 0x80–0x9F 的字符。

这是浏览器使用 Unicode 之前的日子里的一个奇怪的历史产物。 HTML5 对它进行了标准化,因为尽管它是无效的解析器 required 以这种方式解析它。这不会发生在 XML/XHTML.

所以 \u0080 给你实际的字符 U+0080,你看不到因为它是一个不可见的控制字符,但是 &#x0080; 给你代码页 1252 字节 0x80,这是 U +20AC 欧元符号。