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=中文
上面的例子就是先把这一部分解码