Fork me on GitHub

GBK和UTF-8之间的战争,websphere6.1乱码解决方案

战争,折磨的都是码农...


1.Tomcat默认编码,ISO8859_1,

2.websphere6.1我自定义编码GBK

3.旧项目编码GBK,

4.新项目编码utf-8  


这是背景


旧项目发出请求,到新项目中,这就涉及了传参的编码问题,前篇文章(http://hi.baidu.com/ae6623/item/cae883036a9c6ccb75cd3cfa)介绍了如果解决Tomcat前台传UTF-8编码后,后台解析为UTF-8的解决方案,在Tomcat上运行很ok,近期,领导吩咐小码农将项目搞到websphere6.1上面,欢天喜地解决种种困难之后,终于将war包挂到了服务器上,服务器上的websphere6.1很奇葩,GBK编码,死活不能解码成UTF-8,后来,发现websphere它自己经过一些设置,看截图



在通用JVM参数自定义编码:-Dclient.encoding.override=GBK 


可以把前台传来的GBK不用解码就怎么传来的,怎么解出来了,所以我的解码程序就不用管了,但是这不是高潮,高潮是领导让Tomcat下也要能够运行,我次奥,要挑战逻辑了,前台GBK,到websphere不需要解码,前台GBK到Tomcat必须字符集切换一下(就是重新编码成识别的字符串,用param = new String(param.getBytes("ISO8859_1"), "GBK");)这其中,经过了N多的尝试,一开始,我就让它


String param = req.getParameter("docNo");param = new String(param.getBytes("ISO8859_1"), "utf-8");

发现失败,依然乱码乱的不行,就换


param = new String(param.getBytes("GBK"), "utf-8");

更乱,再换


param = new String(param.getBytes("utf-8"), "GBK");

靠,乱的还是那么有型....放弃了,各种百度,发现又是前台二次编码,后台二次解码,二次你大爷!!!!于是尝试


param = new String(param.getBytes("ISO8859_1"), "GBK");

ok ,解决问题,不再乱码...


这其中的艰辛啊,只有被玩过的人才知道玩过的东西真他M的难玩....


我自己理解的就是如果前台GBK编码过来,你后台不需要解码,因为Tomcat对于req.getParameter("docNo")已经自己解码了一次了,我们只需要转换一下字符集即可!


2013年3月20日15:01:58

qq 394263788

落雨


posted @ 2013-03-20 15:05  _落雨  阅读(1948)  评论(0编辑  收藏  举报