奇怪的struts2的中文乱码有关问题及解决
奇怪的struts2的中文乱码问题及解决
我也做过这样的尝试
事实也是看到IE提交的数据是UTF-8的
这个问题看似是浏览器不兼容,其实是json解析的问题
最近在写一个小东西的时候,采用现在最流行的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 楼
wv1124
2011-11-21
我也碰过类似的,呵呵
2 楼
forcer521
2012-03-07
在 ajax 提交请求是,增加 content-type 增加 chartset=UTF-8 头即可。
3 楼
senvon
2012-03-07
forcer521 写道
在 ajax 提交请求是,增加 content-type 增加 chartset=UTF-8 头即可。
我也做过这样的尝试
事实也是看到IE提交的数据是UTF-8的
这个问题看似是浏览器不兼容,其实是json解析的问题