我有一个主JSP页面,说jsp1,其中包括两个JSP页面(jsp2,jsp3)。这些页面中的所有字符串都来自属性文件。

非英语属性文件使用native2ascii转换

native2ascii –encoding =“ 8859-1” lang.properties lang1.properties

所有的JSP页面都有


现在,当显示主jsp页面(jsp1)时,我们在几个jsp2和jsp3字符串中看到乱码。到目前为止,我已经看到这种情况发生在俄语,韩语和日语语言字符串中。它发生在随机字符串上。

有谁知道可能是什么错误

更新更多细节

rus_utf8.proeperties中的字符串是

Щелкните <strong>УСТАНОВИТЬ СЕЙЧАС</strong> и сохраните файл в некотором расположении

使用native2Ascii进行转换后,rus.properties中的String为

\u0429\u0435\u043b\u043a\u043d\u0438\u0442\u0435 <strong>\u0423\u0421\u0422\u0410\u041d\u041e\u0412\u0418\u0422\u042c \u0421\u0415\u0419\u0427\u0410\u0421</strong> \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0444\u0430\u0439\u043b \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438.

在JSP中,我们使用struts <s:text>从属性文件加载字符串

在Firefox中,字符串显示为

��елкните УСТАНОВИТЬ СЕЙЧАС и сохраните файл в некотором расположении.

字符Щ出现乱码。页面中其他位置的相同字符串已正确显示。

最佳答案

非英语属性文件使用native2ascii转换

native2ascii –encoding="8859-1" lang.properties lang1.properties



这是无效的。应该是

native2ascii –encoding ISO-8859-1 lang.properties lang1.properties


除了那里的语法错误(应该立即中止native2ascii)外,ISO-8859-1编码对于俄语,韩语和日语字符串不可能正确。 ISO-8859-1编码完全不覆盖这些字符。假设您将其保存为UTF-8,那么您应该使用

native2ascii –encoding UTF-8 lang.properties lang1.properties


这样,native2ascii将从UTF-8 lang.properties转换为与ISO-8859-1兼容的lang1.properties。 native2ascii将始终转换为ASCII。 -encoding属性与源文件而不是目标文件的编码有关。

至于JSP页面,

<%@page contentType="text/html; charset=UTF-8" %>


根据http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q8应该足够了。

也可以看看:


Unicode - How to get the characters right?




根据示例进行更新。一切实际上都工作正常。看起来很像UTF-8 BOM(Byte Order Mark)是元凶。记事本默认添加它。尝试在另一个编辑器(例如Eclipse)中创建属性文件。

10-06 12:54
查看更多