我正在尝试使用JSTL fmt
标记本地化JSP页面中的内容,其中键在所有语言的多个属性文件中定义。除了那些需要日语,韩语等特殊字符的语言之外,它适用于所有语言。它显示了一系列“????”对于这些语言。我甚至将编码设置为UTF-8。这是怎么造成的,我该如何解决?
appMessage_ja.properties
中的示例键值对:
LABEL_PASSWORD = \u30d1\u30b9\u30ef\u30fc\u30c9
LABEL_LANGUAGE = \u8a00\u8a9e
答案 0 :(得分:0)
问号通常仅在char字节映射器本身知道传输的两个侧使用的编码时使用。目标编码不支持源编码中的任何字符将主动替换为问号。在一般的JSP / Servlet Web应用程序中,只有两个标准位置可以出现:
所有其他地方只会以Mojibake结尾(无法理解的字符序列,空格,由于字体中缺少字形而导致替换字符等),而不是问号。
在你的情况下,它可能是第二个,因为这里没有数据库的方法。在您使用JSP页面时,您应该在JSP页面的顶部设置页面编码:
<%@page pageEncoding="UTF-8"%>
这基本上设置了目标编码(以及HTTP响应charset
标头中的Content-Type
属性)。不要忘记在任何包含和标记文件上重新应用它。如果您想全局配置它,那么您不需要在所有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>