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

    1.scala ①定义:Scala设计的初衷是要集成面向对象编程和函数式编程的各种特性.Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序. ②特点:优雅.简洁.一行代码抵得上多 ...

  2. jmeter造当前时间,未来时间,历史时间

    需求: 需要测试POST接口参数中的time,且需要造时间戳 1.当前系统时间获取 函数:__time 应用: ${__time(yyyy-MM-dd HH:mm:ss,)} ${__time(yyy ...

  3. android 开发 实现一个app的引导查看页面(使用ViewPager组件)

    我们安装完app后第一次打开app,通常都会有一个翻页图片形式的app引导简介说明.下面我们来实现这个功能.ViewPager这个组件与ListView和RecyclerView在使用上有很高的相似处 ...

  4. 转:Java对象序列化

    Java对象序列化 当两个进程在进行远程通信时,彼此可以发送各种类型的数据.无论是何种类型的数据,都会以二进制序列的形式在网络上传送.发送方需要把这个Java对象转换为字节序列,才能在网络上传送:接收 ...

  5. [Android]数据篇 --- SharedPreferences

    转载请标注:转载于http://www.cnblogs.com/Liuyt-61/p/6637515.html -------------------------------------------- ...

  6. 18.纯 CSS 创作 404 文字变形为 NON 文字的交互特效

    原文地址:https://segmentfault.com/a/1190000014818274 感想: positon:absolute  和 :hover HTML代码: <!-- < ...

  7. 下载,和scp上传问题

    下载,和scp上传问题 wget http://download.openx.org/openx-2.8.10.zip  [默认当前目录] scp ldm@192.168.1.150:/var/www ...

  8. 《算法导论》——MergeSort

    前言: 在今后的日子里,我将持续更新博客,讨论<算法导论>一书中的提到的各算法的C++实现.初来乍到,请多指教. 今日主题: 今天讨论<算法导论>第二章算法基础中的归并排序算法 ...

  9. Android开发中常见的设计模式(一)——单例模式

    首先了解一些单例模式的概念. 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 这样做有以下几个优点 对于那些比较耗内存的类,只实例化一次可以大大提高性能,尤其是在移动开发中. 保持 ...

  10. 转载:Bootstrap 源码解析

    Bootstrap 源码解析 前言 Bootstrap 是个CSS库,简单,高效.很多都可以忘记了再去网站查.但是有一些核心的东西需要弄懂.个人认为弄懂了这些应该就算是会了.源码看一波. 栅格系统 所 ...