jsp页面以非英语语言显示垃圾字符

Abh*_*bhi 1 java jsp utf-8 character-encoding

我有一个Main JSP页面说jsp1,它包含两个JSP页面(jsp2,jsp3).这些页面中的所有字符串都来自属性文件.

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

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

所有JSP页面都有<%@ page contentType ="text/html; charset = UTF-8"language ="java"%>

现在当显示主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中,字符串显示为

????????? ?????????? ?????? ? ????????? ???? ? ????????? ????????????.

这个字母?乱了.页面中其他位置的相同字符串已正确显示.

Bal*_*usC 6

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

native2ascii –encoding="8859-1" lang.properties lang1.properties
Run Code Online (Sandbox Code Playgroud)

这是无效的.它应该是

native2ascii –encoding ISO-8859-1 lang.properties lang1.properties
Run Code Online (Sandbox Code Playgroud)

除了你在那里的语法错误(应该立即中止native2ascii),ISO-8859-1编码可能不适合俄语,韩语和日语字符串.ISO-8859-1编码根本不包括这些字符.假设您将其保存为UTF-8,那么您应该使用它

native2ascii –encoding UTF-8 lang.properties lang1.properties
Run Code Online (Sandbox Code Playgroud)

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

至于JSP页面,只需一个

<%@page contentType="text/html; charset=UTF-8" %>
Run Code Online (Sandbox Code Playgroud)

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

也可以看看:


更新按照与实例您的更新.一切都在正常运作.它看起来很像UTF-8 BOM(字节顺序标记)是罪魁祸首.记事本默认添加它.尝试在另一个编辑器中创建属性文件,而不是像Eclipse.