這個不叫亂碼,我非專業。這個是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()函數進行解碼
就完美解決問題了,親自實踐,確實可行。