我做的一个练习关于struts+mysql+jdbc的,在用JSP读取并显示properties文件内容时遇到了一个问题,运行JSP页面页面中显示类似“???zh_CN.my.account???”这样的乱码(在my.account前面自动加上zh_CN这在源文件中是没有的),实际上它应该显示properties文件中的"my.account=\u5e10\u6237(帐户)",起先我以为这是字符集编码问题但是我仔细检查了页面编码没问题都设置成了utf-8,这是什么原因?
一部分的源代码如下:Register.jsp
<tr>
  <td width="121" height="36" class="bookText"><bean:message key="my.account"/></td>
  <td width="464" class="bookText">
    <html:text property="userZh" size="15" maxlength="20"/>
           &nbsp;&nbsp;用户名只能由英文字母,数字和下划线组成
  </td>
</tr>
=========================================
person.properties:
部分代码:
my.account=\u5e10\u6237(帐户)
=========================================
请问大家该怎样做,才能使页面正常显示properties文件中的内容,请大家帮一下忙......

解决方案 »

  1.   

    主要是不能处理中文,只要是properties里有中文,就要用这个工具转换一下,你找找jdk的bin下,有这个程序
      

  2.   

    XX_zh_CN.properties这类的配置文件是以UTF-8编码存储的。Strut会根据配置去选择相应的资源。
    如果是struts2,会有一个文件struts.properties,里面指明 struts.locale=ch_ZH还有一种可能,你的配置文件,UTF-8码不正确。
    正确的做法是,先按GBK格式新建一个XX_zh_CN.properties,按正常方式输入里面的中文,然后用native2ascii转成UTF-8编码。这时再打开这个文件,就发现里面的中文变成了\u5e10\u6237这种样子。
    另外还可以直接用Eclipse的插件来转换,例如 Properties File Editor  或 MyEclipse Properties Editor  
      

  3.   

    楼上正解挖,另外补充一点,别忘记帮你新建的XX_zh_CN.properties注册一下,在struts-config.xml文件里快末尾的地方添加
    <message-resources parameter="XX_zh_CN.properties的路径" />
      

  4.   

    native2ascii命令的做法:
    Cmd后,记得要到达XX_zh_CN.properties文件所在的路径才能做转换,转换前的写在前面。
      

  5.   

    http://www.00bug.com/native2ascii.html 
    在线native与ascii互转,比用Java的native2ascii.exe方便多了。 搂主可以试试。