url参数中文乱码问题解决

时间:2021-06-07 13:36:45

html页面编码为utl-8,但是在页面间通过url的?传参,参数为中文的时候,接收到的参数是乱码,需要转码

例如:在a.html向b.html传参数的时候

var id=123;
var name = "杭州";
window.location.href = encodeURI('b.html?cId='+id+"&cName="+encodeURIComponent(name));


 

在b页面接收参数的时候

var cityName = decodeURIComponent(getQueryString("cName"));
var cId = getQueryString("cId");


后来发现有个更简单的方法,直接改下getQueryString()的代码

如下所示

function getQueryString(name) { 
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var l = decodeURI(window.location.search);
var r = l.substr(1).match(reg);
if (r != null) return unescape(r[2]);
return null;
}

例如:地址为  http://www.abc.com?name=中文

然后 

var name =  getQueryString("name");
得到的值就是“中文”

其实,window.location.search得到的就是链接里“?”后面的值    name=中文

上面的例子就是先把这一部分解码