在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

解决方案 »

  1.   

    properties文件的编码改为ISO-8859-1,写好中文后再native2ascii转码。
    我的这个
    username=\u5F20\u4E09
    [email protected]
    用i18n标签输出,没问题的
      

  2.   

    我用的MyEclipse. properties文件默认的编码就是ISO-8859—1,在视图下添加的汉字,自动会进行转码,源文件就是 username=\u5F20\u4E09 这了
      

  3.   

    java.util.Properties读取资源文件,这个类似乎只支持 ISO-8859-1的编码格式
      

  4.   

    问题解决了!/**
     * 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编码
     * 第五步把编码
      

  5.   

    请问你是怎么解决的? 我也碰到这个问题,已经折腾了好几天了.下面是我问题的描述:
    我使用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>请大家帮忙看一下,我己经被这个问题折腾了好几天了,很急,如果有谁知道怎么解决这个问题,请提供方案,我就先谢谢了!