1. 程式人生 > 實用技巧 >js url路徑傳參,有中文字元出現亂碼怎麼辦

js url路徑傳參,有中文字元出現亂碼怎麼辦

之前我需要去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方法了