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

时间:2022-08-27 22:08:21

这个不叫乱码,我非专业。这个是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()函数进行解码

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