【问题标题】:Special/localized/non-latin characters in properties files are shown as question marks [duplicate]属性文件中的特殊/本地化/非拉丁字符显示为问号 [重复]
【发布时间】:2015-04-27 08:41:18
【问题描述】:

我正在尝试使用 JSTL fmt 标记本地化 JSP 页面中的内容,其中键在所有语言的多个属性文件中定义。它适用于所有语言,除了需要日语、韩语等特殊字符的语言。它显示了一系列“??????”对于这些语言。我什至将编码设置为 UTF-8。这是如何引起的,我该如何解决?

appMessage_ja.properties 中的示例键值对:

LABEL_PASSWORD = \u30d1\u30b9\u30ef\u30fc\u30c9
LABEL_LANGUAGE = \u8a00\u8a9e

【问题讨论】:

  • 您的网站使用的字体是否支持这些字符?

标签: jsp localization jstl properties-file


【解决方案1】:

问号通常仅在 char-byte 映射器完全知道传输的双方中使用的编码时使用。目标编码不支持的源编码中的任何字符都将主动替换为问号。在一个普通的 JSP/Servlet Web 应用程序中,只有 2 个标准的地方可以发生它:

  1. 通过 JDBC 连接在数据库和 Java 代码之间传输字符。
  2. 通过 HTTP 响应在 webserver 和 webclient 之间传输字符。

所有其他地方只会以Mojibake 结尾(无法理解的字符序列、空白方块、由于字体中缺少字形而导致的替换字符等),而不是问号。

在您的情况下,它可能是第二个,因为这里没有数据库。当您使用 JSP 页面时,您应该在 JSP 页面顶部设置页面编码如下:

<%@page pageEncoding="UTF-8"%>

这基本上设置了目标编码(以及 HTTP 响应 Content-Type 标头中的 charset 属性)。不要忘记在任何包含和标记文件上重新应用它。如果您想全局配置它,这样您就不需要在所有 JSP 上重复相同的样板,然后将以下条目添加到 webapp 的web.xml

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

另见:

【讨论】:

  • 我什至设置了 .它不工作。
猜你喜欢
  • 2013-11-21
  • 2019-01-17
  • 2016-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-16
  • 1970-01-01
相关资源
最近更新 更多