今天学习Struts框架,在处理<html:errors>标签显示的时候,中文出现乱码。其中<html:errors>标签的property属性对应为form中添加的ActionErrors中的ActionMessage,而ActionMessage中的参数对应为错误信息的资源索引。最后问题牵扯到了资源国际化。
首先在ApplicationResources.properties中添加数据,但是因为属性值为中文,保存的时候因为编码问题提示不能保存。然后想到学习资源国际化的时候,Myeclipse可以安装插件,可以自动将utf-8转换为ascii编码,所以安装插件,插件地址:http://propedit.sourceforge.jp/eclipse/updates,通过myeclipse的help->software updates->find and install->search for new features to install->new remote site安装。
安装完成后,在ApplicationResources.properties直接输入中文,保存后关闭,插件会自动给转换成中文。
但是服务器重启后,打开jsp界面,中文依旧乱码。上网查找原因,有人说是jsp编码也要修改为utf-8,我查看了一下自己的编码格式,pageEncoding="UTF-8"没有问题的,最后在csdn论坛里面看到有人也测试过,将ApplicationResources.properties编码转换为utf-8后,界面依旧乱码,他的解决方法如下:
将ApplicationResources.properties编码转换为gb2312,方法如下:
在doc命令下,进入到ApplicationResources.properties所在目录下,然后执行如下命令:native2ascii -encoding gb2312 ApplicationResources.properties ApplicationResources_zh.properties。
然后你可以选择配置struts-config.xml,而我则是测试效果,本人也比较懒,直接将ApplicationResources.properties文件删除,然后将ApplicationResources_zh.properties重命名为ApplicationResources.properties。然后页面正常显示中文。至于为什么会是这个样子,因为刚学web开发,所以对于其中的原因,不是很明白,所以特记此博客以备将来查找原因。
ps:native2ascii为jdk中的工具,如果提示“native2ascii不是内部命令”,请检查jdk的bin目录是否在path中,至于如何配path,请参考网上资料