最近一直在迁移实验室的网站,这些网站都是以前师兄编写的,年代有点久远,运行于jdk4 + tomcat4,由于一些原因现在必须要迁移到jdk7+tomcat7的环境中,迁移过程中最让我头疼的就是各种花式乱码。
乱码大都是前台传到后台时出现乱码,师兄的程序中也对这个部分做了一些处理:后台取到的值先按照ISO-8599-1格式转换,然后转为GBK格式(前台传入的格式就是GBK);
value = new String(value.getBytes("ISO-8559-1"),"GBK");
然而这个方法在tomcat7中完全没用,后台得到的字符串无论怎么转码都是乱码。
试遍了网上的方法之后,最终找到了解决乱码的最简单的方法:
1)建立一个filter,filter中调用request.setCharacterEncoding方法设置编码,这样基本可以解决所有的post方式出现乱码的问题,当然你也可以在request.getParameter()之前手动调用设置编码的方法,只不过这样就太麻烦,而且耦合度太高。
2)设置tomcat,在server.xml中<connector>中加入URIEncoding="GBK"属性,这样可以解决get传参中出现乱码的问题,不过这样需要修改tomcat的配置文件,加入你的tomcat底下有多个项目这个方法就不太好了。
3) response.sendRedirect传中文参数的问题,这个问题可以参考下面这篇博客:
http://blog.chinaunix.net/uid-7431665-id-2627263.html