日期:2014-05-16  浏览次数:20644 次

gbk编码下ajax提交乱码的解决
    本来想整个项目都用gbk编码应该不会出现乱码的,但是不明白jquery为啥不能修改编码,只能用utf-8. 提交过去就是乱码,正当编码流程我想是这样的:
ajax(utf-8)-->编码过滤器(gbk)-->action中显示为乱码
?
起初的解决办法:
在action中先用gbk进行编码然后在用utf-8解码
?
感觉没有问题啊,结果偶数个没有问题正常显示,奇数还是出现乱码。很是奇怪。
?
查了很多资料加上我的思考得出的结果:
utf-8编码3个字节表示,而gbk用俩个字节表示,解码的时候偶数个汉字总能够在gbk中找到别的字和这个码匹配所有这个字节码值没有发生变化,奇数个汉字是奇数乘以奇数还是奇数所有会剩一个字节没有办法在gbk中找到字匹配,gbk就用?代替了这个字节码的值,所有出现乱码。
?
目前的解决办法:
http://www.wsria.cn/archives/611
修改jquery源码,对参数再次编码,也就是对参数进行了两次编码,提交到服务器后自动进行了一次解码,然后再手动用utf-8进行解码,从而避免了乱码。
也许是本人比较愚钝想了半天才想明白。
?