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

GBK格式query ajax 奇数中文乱码解决方案
问题: jsp为GBK的编码格式,使用query 的ajax提交中文参数数据,当是偶数中文的时候
正常,也不会出现乱码,当奇数的时候,最后一个中文字符会出现? 的乱码,为解决这一问题,以便后来的入行者少走弯路给出一个答案。
具体为什么出现奇数乱码,我就不仔细数了,请参考:
http://www.iteye.com/wiki/topic/1097560
看网上说了那么多这种问题,却很少有一个人说明解决方案?告诉后来的人答案改怎么解决?
好像都在讨论一个非常高深、玄乎、神秘的东西。可是都没有一个人明确的写一个实用好用的解决方案;
为了我自己以后方便查找,和大家分享一下我的方案,我就卖弄一下吧:
首先,前提是:统一编码格式为GBK,我想这是国内项目一项采用的格式。所以基于jsp格式也是GBK,我给出以下解决方案。

界面中:
var param = "我是中";//此处为奇数个数的中文汉字 (3个)
$.ajax( {
type : "post",
url : "xx.action",
data: {
"param": encodeURI(param)//此处用encodeURI转码
},
success : function(data) {
    alert("成功了");
}
});
后台代码中:
String param ;//对应的set get 这个就不用说了吧。。
//这里用URLDecoder.decode 转码.不乱奇数还是偶数汉字都不会乱码
String str = URLDecoder.decode(param, "utf-8");
//在此时的 str 就是标准的格式啦 不会出现乱码啦。

总结:
其实就是两行代码就搞定啦,整的好多貌似高人的人在那胡说八道。
"param": encodeURI(param)// 界面代码
URLDecoder.decode(param, "utf-8");//java action中

以上说明和代码实例,若有人再看不懂或有疑问,我建议回家养猪,不要在IT行业混了。