我有一个主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)中创建属性文件。