最近项目中遇到一个这样问题,在页面跳转时,追加了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;

}

location search的中文加密的更多相关文章

  1. 【知识】location.search获取中文时候会被编码成一串字符

    [转码] 例如:case.html?id='这个是页面的标题' 当想要使用location.search获取?id='这个是页面的标题'的时候,包含的中文会被编码成一串字符串. 所以我们需要进行解码, ...

  2. 关于window.location.href 传中文参数 乱码问题

    传中文查询乱码问题 则需要对要传的参数进行二次编码 例如  window.location.href ="/xx.jsp?name="+name+""; 这样子 ...

  3. html传值 location.search取

    $(function() { var url = decodeURI(location.search); if (url.indexOf("?") != -1) { var str ...

  4. js通过location.search来获取页面传来的参数

    这篇文章主要介绍了通过window.location.search来获取页面传来的参数,经测试是OK的 ? 1 2 3 4 5 function GetQueryString(name) { var ...

  5. window.location.search

    http://i.cnblogs.com/EditPosts.aspx?opt=1&opt2=x 就拿上面这个URL来说window.location.search的返回值为opt=1& ...

  6. js中location.search、split()HTML5中localStorage

    1. location.search在客户端获取Url参数的方法 location.search是从当前URL的?号开始的字符串 如:http://www.baidu.com/s?wd=baidu&a ...

  7. window.location.search作用

    window.location.search.substr(1).split("&") 这里面的相关属性和时间还有参数能具体说明一下吗?window.location wi ...

  8. location.search 详解

    JS中location.search什么意思 设置或获取网页地址跟在问号后面的部分 当以get方式在url中传递了请求参数时,可以利用location的search属性提取参数的值,下面的代码把参数的 ...

  9. (转)window.location.search的用法

    location.search是从当前URL的?号开始的字符串如:http://www.51js.com/viewthread.php?tid=22720它的search就是?tid=22720 通过 ...

随机推荐

  1. 「2017 山东一轮集训 Day6」子序列(矩阵快速幂)

    /* 找出了一个dp式子 是否能够倍增优化 我推的矩阵不太一样 是 1 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 2 求得逆矩阵大概就是 1 0 0 ...

  2. Django之三种文件上传

    方式一: 通过form表单提交到后台 前端: <!DOCTYPE html> <html lang="en"> <head> <meta ...

  3. day2作业(基本数据类型,语法)

    #coding:utf-8 '''1.写代码实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败!实现用户输入用户名和密码,当用户名为 seven 且 ...

  4. angularjs探秘<五> 举足轻重的scope

    scope在angular中的作用可谓举足轻重,不理解scope就不会angular: scope是应用在 HTML (view) 和 JavaScript (controller)之间的纽带. sc ...

  5. hadoop2.4的伪集群的搭建

    1.准备Linux环境 1.0先将虚拟机的网络模式选为NAT 1.1修改主机名 vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=itcast ### ...

  6. android开发 RecyclerView 列表布局

    创建一个一行的自定义布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns ...

  7. Eclipse svn 项目 星号

    上图: 明明没有文件修改过就是无脑显示有提交的文件,有强迫症受不了. 而且每次提交你都点开看有没有漏掉啥文件.很麻烦.也很难受 .很容易漏提交 把本地文件跟SVN同步对比一下. 果然有文件. 添加规则 ...

  8. springBoot_freemark配置

    Spring Boot –test 1.添加依赖 <!-- 引入 spring-boot-starter-test 集成单元测试--> <dependency> <gro ...

  9. 重新指派usb转串口模块在linux系统中的设备调用名称

    How to remap /dev/ttyUSB* to a specific name to be called by my program. How to map /dev/ttyUSB* to ...

  10. uva-10487-枚举

    题意:给你一个集合,每俩个数相加得到一个和s,输入s1,问离s1最近的s是多少 二分,注意如果二分出相等,那一定是最近的数,要不然就比较最后mid和mid-1的数 #include <strin ...