這個不叫亂碼,我非專業。這個是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