奇怪的struts2的中文乱码问题及解决

最近在写一个小东西的时候,采用现在最流行的struts2+ibatis+spring的架构开发

在开发到最后的时候,测试发现在IE上的请求出现了中文乱码,开发测试一般是用FF。

这个比较搞,我从学校毕业以来就没有碰到过中文乱码,而且一直保持着数据库编码+开发文件编码+网页content_type编码一致的习惯,怎么可能出现中文乱码。。。。。。

而且只出现在IE浏览器,FF和chrome正常。。。。这个就排除了前面设置的编码的问题。。。。

看到现象,我最先怀疑的是IE和FF的不兼容,经过IE上的F12开发工具的调试,发现IE上的中文传输是正常的,firebug的中文也是正常的,那为啥在IE上会有中文问题,在FF上没有???

经过多次我才发现,IE在处理ajax请求的时候,会把请求中的中文处理成unicode编码,也就是变成 \u6d88\u8d39\u6b21\u6570的格式,而FF不会。难道是这个问题造成的中文乱码。。。。。。。。。。

由于我的ajax请求中传输的json参数,后台程序采用的struts2中自带的json插件解析的

经过调试发现解析,struts自带的json插件解析的数据,会把IE传会的unicode编码当作普通字符串处理,而不会在转换后变成中文

DONE,问题找到了,当换成gson解析后,IE的中文问题解决

 提供一个IE中文乱码的另外一个思路吧,呵呵

猜你喜欢

转载自senvon.iteye.com/blog/1243401