问题描述:
使用IE浏览器,通过url传参,中文字符变成乱码,Chrom浏览器无该现象
例:
使用ajax向后台传参时,url中的中文是正常的
var ntid="王二蛋";
var url= "Ashx/Auth.ashx?type=Add_Comment&ntid=" + ntid + "&RandID=" + Math.random();
$.ajax{
type:"GET",
dataType:"json",
url:url,
success:function(data){
}
}
但是,到后台,ntid是乱码
case "Add_Comment":
callback = BLL.Getdata.Add_Comment(ntid);
json = Newtonsoft.Json.JsonConvert.SerializeObject(callback);
break;
问题分析:
url是不支持非ASCII字符的,当地址栏url路径带中文参数时,就会产生乱码。
一般浏览器会自动帮我们进行urlencode的十六进制编码,并且urldecode的解码也会由tomcat帮我们自动完成。
但IE浏览器不会帮我们自动进行urlencode编码。
解决方法:
使用encodeURI()函数手动转码
var ntid="王二蛋";
var url= encodeURI("Ashx/Auth.ashx?type=Add_Comment&ntid=" + ntid + "&RandID=" + Math.random());
$.ajax{
type:"GET",
dataType:"json",
url:url,
success:function(data){
}
}