两个HTML地址栏传中文参数乱码

时间:2022-09-19 18:14:22

这个不叫乱码,我非专业。这个是url编码,js本身就是读取url编码的。对于js获取url的中文你可以尝试用escape() encodeURI() encodeURIComponent() decodeURI()

来使js停止或者转换url编码

直接看代码吧。

第一个html,取名叫  a.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>第一页</title>
</head>
<body>
<a href="b.html?id=1&name=胖娘子">点我带参数跳转</a>
</body>
</html>

  第二个页面,获取参数的页面,取名叫   b.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>接受参数页</title>
</head>
<body>
我是接受参数页
</body>
<script type="text/javascript" charset="UTF-8">
//获取参数方法
function GetUrlParam(name){
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if(r!=null)return unescape(r[2]); return null;
}
//使用获取参数方法
var id= GetUrlParam("id");
var name = GetUrlParam("name");
console.log("id:"+id+" name:"+name); </script>
</html>

  我以上的写法最后得出来的结果是

两个HTML地址栏传中文参数乱码


接下来看看如何解决

encodeURI()转码,decodeURI()解码

<script type="text/javascript" charset="UTF-8">
//获取参数方法
function GetUrlParam(name){
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
var r = encodeURI(window.location.search).substr(1).match(reg);
if(r!=null)return unescape(r[2]); return null;
}
//使用获取参数方法
var id= GetUrlParam("id");
var name = decodeURI(GetUrlParam("name"));
console.log("id:"+id+" name:"+name);
</script>
最后获取的结果

两个HTML地址栏传中文参数乱码


用encodeURI()函数对地址栏进行转码,然后用decodeURI()函数进行解码

就完美解决问题了,亲自实践,确实可行。