【问题标题】:Escaped Unicode sometimes renders correctly, but sometimes renders as HTML entites转义的 Unicode 有时会正确呈现,但有时会呈现为 HTML 实体
【发布时间】:2014-01-27 03:55:52
【问题描述】:

我遇到了一个问题,我的 .properties 文件中的某些值无法在我的 UI 中正确呈现,但大多数都可以。我看到的不是带有变音符号的字母,而是 HTML 实体名称。我将解释到目前为止我所做的事情:

起初我无法正确渲染任何带有变音符号的字母。幸运的是,我找到了this post,并且通过在我的 .properties 文件中使用转义的 Unicode 取得了进展。

(附带说明,虽然转义 Unicode 主要解决了这个问题,但它使 .properties 文件难以阅读。幸运的是,IDEA 为您提供了使用转义 unicode 的选项,并且仍然使用人类可读的字符读取文件。阅读更多here。)

现在这是我当前的问题:在我的应用程序的某些部分,带有变音符号的字母显示为 Latin-1 HTML 实体名称。例如,我看到的不是“ç”,而是“& amp;ccedil;” (我在 & 和 amp 之间添加了一个额外的空格,否则它会呈现为 & 符号)。起初,我什至不知道这意味着什么,但在查看 this table 之后,我知道这是一个 ISO-8859-1 实体名称。

这就是我到目前为止所尝试的,尽管没有什么能成功给我带有变音符号的字符。

  1. 虽然我仍在使用 Glassfish 2,但我找到了this post,并尝试将以下内容添加到我的 web.xml

    <jsp-config>
        <jsp-property-group>
            <url-pattern>*.jsp</url-pattern>
            <page-encoding>UTF-8</page-encoding>
        </jsp-property-group>
    </jsp-config>
    

    现在,当我在 Chrome 开发工具中检查响应标头时,我可以看到以下内容:

     Content-Type:text/html;charset=UTF-8
    

    但是,我仍然在我的 UI 中看到上述 HTML 实体名称。

  2. 我尝试通过将以下内容添加到从 .properties 文件中提取值的 JSP 中显式设置 JSP 本身的字符集:

    <%@page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
    
  3. 在尝试解决此问题时,我了解到 ISO 8895-1 是属性文件的默认编码,因此我尝试在 IDEA 中更改编码(我使用的是 11,顺便说一句)。您可以通过转到“设置”>“文件编码”来执行此操作。底部是一个名为“属性文件的默认编码”的选项,我将其更改为 UTF-8。但是,我仍然看到 HTML 实体名称。

我已经尝试了一段时间,但我终于无能为力了。有什么建议吗?

【问题讨论】:

    标签: jsp jakarta-ee unicode utf-8 glassfish


    【解决方案1】:

    我真的不明白属性文件是如何适应这个的,但我建议只是编写一个函数来逐个字符地遍历字符串并将所有字符代码高于 128 的字符更改为 charcode;其中 charcode 是十进制代码,并在显示之前通过它运行所有花哨的文本。然后,即使您实际上没有正确设置页面编码,浏览器仍然应该能够正确处理字符。 (例如,'ç' 将是 ç)

    例如,我看到的不是“ç”,而是“& amp;ccedil;” (我在 & 之间添加了一个额外的空格 和 amp,否则呈现为 & 符号

    你应该做的是改变 &ccedil;到 ç然后它将在浏览器中显示实际字符。

    【讨论】:

      猜你喜欢
      • 2019-08-29
      • 2021-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-27
      • 1970-01-01
      • 2019-03-11
      • 1970-01-01
      相关资源
      最近更新 更多