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

摘要:
战争折磨着农民…1.Tomcat默认代码,ISO8859_1.2.websphere6.1我定义了代码GBK3。旧项目代码GBK,4。新项目代码utf-8。这是背景。旧项目向新项目发送请求,这涉及参数传输的编码。上一篇文章(http://hi.baidu.com/ae6623/item/cae883036a9c6ccb75cd3cfa)本文描述如何解决从Tomcat前台传输UTF-8代码的问题

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


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它自己经过一些设置,看截图


GBK和UTF8之间的战争,websphere6.1乱码解决方案第1张


在通用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

落雨


免责声明:文章转载自《GBK和UTF8之间的战争,websphere6.1乱码解决方案》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇CNKI知网如何批量下载论文磁盘 I/O 性能监控指标和调优方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

socketserver模块

  虽说用Python编写简单的网络程序很方便,但复杂一点的网络程序还是用现成的框架比较好。这样就可以专心事务逻辑,而不是套接字的各种细节。SocketServer模块简化了编写网络服务程序的任务。同时SocketServer模块也是Python标准库中很多服务器框架的基础。   socketserver模块可以简化网络服务器的编写,Python把网络服务...

Linux下修改MySQL数据库字符编码为UTF-8解决中文乱码

由于MySQL编码原因会导致数据库出现乱码。 解决办法: 修改MySQL数据库字符编码为UTF-8,UTF-8包含全世界所有国家需要用到的字符,是国际编码。 具体操作: 1、进入MySQL控制台 >mysql -uroot -p #输入密码进入 >status; #查看当前MySQL运行状态,如下图所示:  ...

MySQL 字符集与比较规则

参考:《MySQL是怎样运行的》,小孩子 字符集 # 查看字符集 show (character set|charset) [like 匹配的模式]; # utf8(utf8mb3) 与 utf8mb4 有什么不同? utf8(utf8mb3):用 1-3 字节表示一个字符 utf8mb4:用 1-4 字节表示一个字符,支持 emoji 表情哦...

Sybase配置中文语言支持及字符集

在windows平台上,Sybase ASE15.0.7安装完成后默认语言是:英语(us_english),默认字符集为:cp850。cp850是一个西欧字符集,虽然也能使用cp850字符集保存汉字,但是不推荐在生产环境中使用该字符集。 如果生产系统中Sybase ASE数据库仅考虑支持简体中文的话,则可以使用cp936或者utf8这两种字符集。如果需要国...

sitecustomize.py 用法

1、在python安装目录下的lib下的site-packages 目录中,新建文件sitecustomize.py。这是个特殊的文件,在python启动时会自动执行其中的语句。在sitecustomize.py中的语句sys.setdefaultencoding("UTF-8")的作用是将默认编码设置为"utf-8",样使用中文时就不会出现 Unicod...

freeswitch用户整合(使用mysql数据库的用户表)

freeswitch是一款强大的voip服务器,可以语音和视频。但是它默认是采用/directory文件夹下的xml来配置用户的,对于整合到现有系统或者使用数据库保存用户信息的系统都是非常不方便的,所以,本文主要描述一种方法,解决freeswitch用户整合的问题。 完成这一任务需要三步,配置unixodbc,将用户验证转接到lua脚本,修改拨号计划使得...