笔者在工作中遇到这个问题,第一次是[b]POST[/b]中的中文乱码问题。在JSP页面中提交中文数据时,当时是用FF测试,发现没有问题,数据能提交而且能用Hibernate插入到数据库,之后用IE测试,发现不行,插入失败,换成chrome也不行。最后发现问题的所在,中文打印输出时为乱码。JSP中的编码为<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>,由于是用POST提交数据,第一反应就是加一行代码:
问题即解决。
第二次是用[b]GET[/b]提交数据,servlet接收数据,因为在同一个表单中,有文件上传,也有一般的数据,于是用到了ajaxFileUpload上传插件,文件上传用的是POST提交方式,而一般的数据用的是GET提交。同样是在UTF-8的JSP页面中,同样中文出现乱码。但这一次没有上一次幸运了。在网上查了很多资料,但还是没有解决,有的是修改JSP页面编码,修改成GBK或gb2312,有的是修改tomcat的服务器接收数据的编码。但有一点提醒了我,tomcat默认接收数据的编码是ISO-8859-1,于是就想到了将字符串转换编码。
问题解决。只不过要麻烦点,每个涉及到中文的参数值都要转换编码,不过问题还是解决了。
request.setCharacterEncoding("utf-8");
问题即解决。
第二次是用[b]GET[/b]提交数据,servlet接收数据,因为在同一个表单中,有文件上传,也有一般的数据,于是用到了ajaxFileUpload上传插件,文件上传用的是POST提交方式,而一般的数据用的是GET提交。同样是在UTF-8的JSP页面中,同样中文出现乱码。但这一次没有上一次幸运了。在网上查了很多资料,但还是没有解决,有的是修改JSP页面编码,修改成GBK或gb2312,有的是修改tomcat的服务器接收数据的编码。但有一点提醒了我,tomcat默认接收数据的编码是ISO-8859-1,于是就想到了将字符串转换编码。
new String(s.getBytes("ISO-8859-1"), "utf-8");
问题解决。只不过要麻烦点,每个涉及到中文的参数值都要转换编码,不过问题还是解决了。