在struts2 国际化中,中文老是出现乱码,
src
--- globalMessages_en_US.properties 编码为UTF-8
HelloWorld=Hello World!
username=User Name
password1=Password1
passwordagain=Password Again
submit=Submit
doregist=do regist
--- globalMessages_zh_CN.properties 编码为UTF-8
HelloWorld=\ufffd\ufffd\u00e3\ufffd\ufffd\ufffd\ufffd\u78e1
name=\ufffd\u00fb\ufffd\ufffd\ufffd\ufffd
pass=\ufffd\u00fb\ufffd\ufffd\ufffd\ufffd\ufffd
username=\ufffd\u00fb\ufffd\ufffd\ufffd
password1=\ufffd\ufffd\ufffd\ufffd
password2=\u0237\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd
birthday=\ufffd\ufffdstruts.xml<struts>
<include file="struts-default.xml" />
<constant name="struts.objectFactory" value="spring" />
<constant name="struts.custom.i18n.resources" value="globalMessages"></constant>
<package name="login" extends="struts-default">
<action name="loginAction" class="com.liuc.web.LoginAction">
<result name="success">/welcome.jsp</result>
<result name="fail">/error.jsp</result>
</action>
</package>
</struts> WEB-INF
globalMessages.propertiesHelloWorld=Hello World!
username=User Name
password1=Password1
passwordagain=Password Again
submit=Submit
doregist=do regist
src
--- globalMessages_en_US.properties 编码为UTF-8
HelloWorld=Hello World!
username=User Name
password1=Password1
passwordagain=Password Again
submit=Submit
doregist=do regist
--- globalMessages_zh_CN.properties 编码为UTF-8
HelloWorld=\ufffd\ufffd\u00e3\ufffd\ufffd\ufffd\ufffd\u78e1
name=\ufffd\u00fb\ufffd\ufffd\ufffd\ufffd
pass=\ufffd\u00fb\ufffd\ufffd\ufffd\ufffd\ufffd
username=\ufffd\u00fb\ufffd\ufffd\ufffd
password1=\ufffd\ufffd\ufffd\ufffd
password2=\u0237\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd
birthday=\ufffd\ufffdstruts.xml<struts>
<include file="struts-default.xml" />
<constant name="struts.objectFactory" value="spring" />
<constant name="struts.custom.i18n.resources" value="globalMessages"></constant>
<package name="login" extends="struts-default">
<action name="loginAction" class="com.liuc.web.LoginAction">
<result name="success">/welcome.jsp</result>
<result name="fail">/error.jsp</result>
</action>
</package>
</struts> WEB-INF
globalMessages.propertiesHelloWorld=Hello World!
username=User Name
password1=Password1
passwordagain=Password Again
submit=Submit
doregist=do regist
我的这个
username=\u5F20\u4E09
[email protected]
用i18n标签输出,没问题的
* Locale 对应特定的国家和语言
* ResourceBundle 用于加载一个资源包
* MessageFormat 用于格式化消息
* 对非西欧的文字进行编码
* 第一步新建一个.properties 文件 默认编码为iso-8859-1
* 第二步以key-value 进行编写,并保存,此时会提示一个错误 格式如:username=用户名
* 第三步把新建文件修改编码为UTF-8
* 第四步JDK自带一个编码工具叫native2ascii.exe ,在%JAVA_HEMO%/bin/下可以找到
* 从dos 进入进行编码可格式如:natice2ascii -encoding UTF-8 文件的全限路径+文件名 输出文件地址
* 编过码的文件如:username=\u7528\u6237\u540d 是标准的UNICODE编码
* 第五步把编码
我使用struts2-core-2.1.8.jar和struts2-tiles-plugin-2.1.8.jar整合一个测试的页面,并提供国际化支持ApplicationResources_en_US.properties 和ApplicationResources_zh_CN.properties, 如果不经过Tiles,国际化支持没有问题,也就是直接通过JSP输出页面,但是通过Tiles时,中文国际化就乱码, 而且我通过了native2ascii -encoding UTF-8 a.txt ApplicationResources_zh_CN.properties做了转化,还有很多的方式native2ascii -encoding gb2312 or iso-8859-1
转化文件,但是页面显示就是乱码, 下面是我的Struts.xml文件, 另外, jsp页面都采用了统一的utf-8编码
<%@ page contentType="text/html; charset=UTF-8 pageEncoding="UTF-8"%>
<struts>
<constant name="struts.enable.DynamicMethodInvocation"
value="false" />
<constant name="struts.devMode" value="false" />
<constant name="struts.custom.i18n.resources"
value="ApplicationResources" /><package name="default" extends="struts-default" namespace="/">
<result-types>
<result-type name="tiles"
class="org.apache.struts2.views.tiles.TilesResult" />
</result-types>
<action name="login"
class="net.viralpatel.struts2.LoginAction">
<result name="success" type="tiles">/welcome.tiles</result>
<result name="error">Login.jsp</result>
</action>
<action name="customer"
class="net.viralpatel.struts2.CustomerAction">
<result name="success" type="tiles">/customer.success.tiles</result>
<result name="input" type="tiles">/customer.tiles</result>
</action>
<action name="customer-form">
<result name="success" type="tiles">/customer.tiles</result>
</action>
</package>
</struts>但是直接用jsp,不通过Tiles,就能正常显示,请参考Struts.xml<struts>
<constant name="struts.enable.DynamicMethodInvocation"
value="false" />
<constant name="struts.devMode" value="false" />
<constant name="struts.custom.i18n.resources"
value="ApplicationResources" /><package name="default" extends="struts-default" namespace="/">
<action name="login"
class="net.viralpatel.struts2.LoginAction">
<result name="success">Welcome.jsp</result>
<result name="error">Login.jsp</result>
</action>
<action name="customer"
class="net.viralpatel.struts2.CustomerAction">
<result name="success" >Customer.jsp</result>
<result name="input">Customer.jsp</result>
</action>
<action name="customer-form">
<result name="success">Customer.jsp</result>
</action>
</package>
</struts>请大家帮忙看一下,我己经被这个问题折腾了好几天了,很急,如果有谁知道怎么解决这个问题,请提供方案,我就先谢谢了!