战争,折磨的都是码农...
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
落雨