浏览器默认对URL地址加密问题
自己踩到的坑,来做一下笔记。
拿到一个链接,需要截取url中的key=value值,参数中还包含中文。当截取出来的值发现,会出现中文字乱码,导致不能正常使用。这个时候就得对地址进行解码。废话不多说,直接上代码
地址:
图中地址:是url参数中的其中一个。当你放到浏览器URL中会发现自动对它进行了编码。
会发现地址中出现带有%XXX的字样,对符号进行了编码。如果通过以下方法直接进行截取的话,中文字就会出现乱码
```javascript
// 截取url参数
getQueryVariable() {
let arr = window.location.hash.split("?")[1].split("&");
let theRequest = new Object();
for (let i = 0; i < arr.length; i++) {
theRequest[arr[i].split("=")[0]] = unescape(arr[i].split("=")[1]);
}
return theRequest;
},
就会变成图中这个字样,原因是用了unescape()
解决办法:把unescape()换成decodeURI(),然后最后在用unescape()把经过decodeURL()转过的编码再进行一次解码即可
最后才可以得到图一中正常的跳转地址。