试用RALASAFE1.2 , 遇到中文乱码问题,网上找了下解决方案,不全,重新做了个整理:
1.浏览器页面全部使用UTF-8编码方式,当浏览器提交数据到WEB服务器时,对提交数据做UTF-8编码。在web.xml里面配置SetCharacterEncodingFilter就可以了(该类在apache-tomcat/webapps/jsp-examples里面能够找到;ralasafe demo里面也有) :
<filter>
<filter-name>encoding</filter-name>
<filter-class>filter.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
添加
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/ralasafe/*</url-pattern>
</filter-mapping>
2.jdbc驱动支持UTF-8,这样可以将UTF-8编码数据插入数据库。ralasafe-demo(中文)使用mysql jdbc驱动时,
这样指定jdbc url:jdbc:mysql://localhost/zh_mydemo?useUnicode=true&characterEncoding=utf-8
4.数据库本身要支持中文,也使用UTF-8编码吧
只要以上几点做到,就能基本保证中文无乱码了。不过,有的时候也会出现乱码。比如ralasafe使用jquery做ajax查询时,带有中文参数,还是有乱码。此时在后台使用iso8859-1进行解码,然后使用Utf-8进行编码,就能解决问题。相关代码如下:searchName=new String(searchName.getBytes(“ISO-8859-1″),”UTF-8″);