【问题标题】:Special characters representation issue in JSPJSP中的特殊字符表示问题
【发布时间】:2015-06-13 10:03:52
【问题描述】:

在JSP文件中,源代码为

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

页面上的结果是:

|1€3|13|

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

【问题讨论】:

    标签: html jsp unicode utf-8 euro


    【解决方案1】:

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

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

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

    【讨论】:

    • 这是 StackOverflow 上最好的问答之一
    猜你喜欢
    • 1970-01-01
    • 2012-08-04
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多