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方法了

 

posted @ 2021-01-08 11:29  卖糖纸的小糖果  阅读(852)  评论(0)    收藏  举报