地址栏(URL)参数含有特殊符号的处理
背景:
当你的参数中含有 & 等特殊符号
例如:?redirect=a=1&b=2
我们期望的是a=1&b=2
作为redirect
的值,
{
redirect: 'a=1&b=2',
}
但是实际会解析成
{
redirect: 'a=1',
b:2
}
解决方案:
我们需要对特殊符号转码
方案1:(不推荐)
https://blog.csdn.net/qq_41994014/article/details/107960372
let token = this.$route.query.token;
if (token) {
// url地址栏中特殊字符转义
token = token
.replace(/\=/g, "%3D")
.replace(/\+/g, "%2B")
.replace(/[\s]/g, "%2F")
.replace(/\?/g, "%3F")
.replace(/\#/g, "%23")
.replace(/\&/g, "%26");
}
方案2:(推荐)
其实可以用URl编码函数
encodeURIComponent('=') // '%3D'
如果是解码可以用
decodeURIComponent('%3D') // =
URL 查询参数
对象转字符串
var a = new URLSearchParams({a:1,b:2})
a.toString() // => 'a=1&b=2'
字符串转对象
var a = new URLSearchParams('a=1&b=2')
const paramObj = Object.fromEntries(a)
console.log(paramObj) // {a: '1', b: '2'}