转换一下编码
native2ascii ApplicationResources.properties  ApplicationResources_cn.properties  
//ApplicationResources.properties  为有中文的property文件

解决方案 »

  1.   

    这篇文章有介绍http://dev.csdn.net/develop/article/25/25602.shtm
      

  2.   

    要有对应的ApplicationResources_zh_CN.property文件properties文件中如果有中文,必须用native2asc工具进行转码
      

  3.   

    Struts的ResourceBundle的中文问题的罪魁祸首是java.util.Properties有问题,与Struts本身无关。因为Struts的PropertyMessageResources用java.util.Properties来读入属性文件。你如果有兴趣可以打开jdk带的源代码看看java.util.Properties的load方法的第一行:
    BufferedReader in = new BufferedReader(new InputStreamReader(inStream, "8859_1"));
    居然是以8859_1编码来读入所有的属性文件。
      

  4.   

    to xiaoxi777(小溪):
    我看了,的确如此。
    那可不可以修改java.util.Properties,编译后重新打包呢
      

  5.   

    可以的,不过我不是直接改JDK的源码,因为担心JDK重新打包麻烦,而是写了一个类来替代Propertiess,因为没有足够的时间,所以只是继承了java.util.Properties,把load的第一行改为BufferedReader in = new BufferedReader(new InputStreamReader(inStream));
    然后创建两个类分别用来代替PropertyMessageResources和PropertyMessageResourcesFactory。也只是简单的改了PropertyMessageResources的loadLocale方法中Properties props = new Properties();这一行。然后分别在web.xml的action servlet的配置中加入factory参数,值设为改过的PropertyMessageResourcesFactory,在struts的配置文件中把message-resources的factory属性设为改过的PropertyMessageResourcesFactory,就彻底解决了读属性文件的中文问题。不需要用native2ascii先转换属性文件。如果你可以重新编译java.util.Properties的话,当然更简单。