`
senvon
  • 浏览: 36466 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

奇怪的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中文乱码的另外一个思路吧,呵呵

 

1
0
分享到:
评论
4 楼 showr 2012-10-10  
$.post(ur,params,callback);

用jquery 的这方法应该不会有乱码问题吧.
3 楼 senvon 2012-03-07  
forcer521 写道
在 ajax 提交请求是,增加 content-type 增加 chartset=UTF-8 头即可。

我也做过这样的尝试
事实也是看到IE提交的数据是UTF-8的

这个问题看似是浏览器不兼容,其实是json解析的问题
2 楼 forcer521 2012-03-07  
在 ajax 提交请求是,增加 content-type 增加 chartset=UTF-8 头即可。
1 楼 wv1124 2011-11-21  
我也碰过类似的,呵呵

相关推荐

Global site tag (gtag.js) - Google Analytics