Web开发问题:IE浏览器中url中文乱码问题

问题描述:

使用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){
	}
}

参考文献:

E浏览器url带中文参数导致乱码问题(chrome下正常)
IE中ajax或者跳转url中带中文参数的坑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值