这个不叫乱码,我非专业。这个是url编码,js自己就是读取url编码的。对于js获取url的中文你能够尝试用escape() encodeURI() encodeURIComponent() decodeURI() javascript
来使js中止或者转换url编码html
直接看代码吧。java
第一个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>
我以上的写法最后得出来的结果是url
接下来看看如何解决spa
encodeURI()转码,decodeURI()解码 code
<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()函数进行解码htm
就完美解决问题了,亲自实践,确实可行。blog