js获取url中的中文参数出现乱码解决方法

从网上copy的获取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; //返回参数值
}

但是在使用的过程中,发现其在获取中文参数的时候,获取到的值是乱码的
解决办法:将解码方式unscape换为decodeURI
原因:浏览器会将url中的中文参数进行encodeURI编码,所以要通过js使用decodeURI进行解码

function getUrlParam(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
    var r = window.location.search.substr(1).match(reg); //匹配目标参数
    if(r != null) return decodeURI(r[2]);
    return null; //返回参数值
}

你可能感兴趣的:(web前端)