这个不叫乱码,我非专业。这个是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>
我以上的写法最后得出来的结果是
接下来看看如何解决
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>
最后获取的结果
用encodeURI()函数对地址栏进行转码,然后用decodeURI()函数进行解码
就完美解决问题了,亲自实践,确实可行。