zoukankan      html  css  js  c++  java
  • 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);

    }

    也可以做一个公共组件

    function(name){

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

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

            if (r) {

            while(r[2].indexOf('%')>-1){

        r[2]= decodeURI(r[2]);

       }

                return r[2];

            }

            return null;

        }

  • 相关阅读:
    Navicat 连接MySQL 8.0.11 出现2059错误
    安全技术运营的心得
    浅谈命令混淆
    2021年度总结与2022新的展望
    域环境搭建之安装exchange
    内网ADCS攻防
    CVE202142287复现
    企业安全建设——安全防线框架建设(一)
    frp_v0.37.1内网穿透,内网服务公网用不求人
    WP7XNA 多点触摸
  • 原文地址:https://www.cnblogs.com/Super-scarlett/p/9253616.html
Copyright © 2011-2022 走看看