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

浙公网安备 33010602011771号