location search的中文加密

Posted super-scarlett

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了location search的中文加密相关的知识,希望对你有一定的参考价值。

最近项目中遇到一个这样问题,在页面跳转时,追加了location.search,有中文字符,但是在分享第二次时,这个链接无法获取中文字段,变成乱码。

仔细对比,发现在页面分享时,浏览器自动对中文进行了二次加密,所以需要二次解密,才可以获取字段值。

 

eg.   location.href = "index.html?provinceName="+"江苏";

location.search = "?provinceName=%25E6%25B1%259F%25E8%258B%258F%25E7%259C%2581"

 

分享以后:

location.search = "?provinceName=%2525E6%2525B1%25259F%2525E8%25258B%25258F%2525E7%25259C%252581"

这样就对江苏进行了2次加密。

针对这个问题,2种解决方案:

1>自己封装加密方法,对加密的中文用英文显示,这样浏览器就不会做二次加密了。

2>可以通过循环,直到解密成中文。

pms:function(name){

        var reg = new RegExp(‘(^|&)‘ + name + ‘=([^&]*)(&|$)‘, ‘i‘);

        var r = location.search.substr(1).match(reg);

        if (r) {

            return decodeURI(r[2]);

        }

        return null;

    }

 

var provinceName= api.pms(‘provinceName‘);

while(provinceName.indexOf(‘%‘)>-1){

provinceName= decodeURI(provinceName);

}

 

以上是关于location search的中文加密的主要内容,如果未能解决你的问题,请参考以下文章

以 JSON 格式的 window.location.search 查询

解析 location.search 对象以查找查询参数

Angular 7 中的 $location.search() 等效项

使用 location.search 定位参数的值

Instagram GET /locations/search 返回 400 错误

Location search 属性