js url路徑傳參,有中文字元出現亂碼怎麼辦
阿新 • • 發佈:2021-01-08
之前我需要去url上的值,在網上搜了個方法,但是這個方法出現了一個問題,就是在值為中文的時候,取值會出現亂碼,當時那串程式碼如下:
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; //返回引數值 }
這串程式碼雖然能取到值,但是出現中文字元會取到亂碼,這是因為編碼的問題,我們給他套一個decodeURIComponent 就好了,如下:
function getUrlParam(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //構造一個含有目標引數的正則表示式物件 var r = window.location.search.substr(1).match(reg); //匹配目標引數 if(r != null) return unescape(decodeURIComponent(r[2])); return null; //返回引數值 }
最後我們再拓展一下:
decodeURI()與decodeURIComponent()兩種解碼方法的區別
decodeURI對URI的特殊字元是沒有編碼和解碼能力的
如果引數中出現#,/,&這些字元,就必須要用decodeURIComponent方法了