地址栏(URL)参数含有特殊符号的处理

地址栏(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 查询参数

URLSearchParams

对象转字符串

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'}

你可能感兴趣的:(地址栏(URL)参数含有特殊符号的处理)