前言

更新模板的时候发现了客户提上来的一个问题,下单信息存在%的时候会出现 URIError: URI malformed的错误,这个就是对url解码的时候出现问题,因为在传参的时候进行过 encodeURIComponent ,所以汉字等就会编码掉,现在突然多了一个 %所以肯定就报错了。

正文

问题复现:

假设现在有一个urlquery参数为:{"gid":110,"num":1}

进行encodeURIComponent过后得到的:'%7B%22gid%22%3A110%2C%22num%22%3A1%7D'

这个时候使用decodeURIComponent是没有问题的

但是如果我的参数为:{"gid":110,"num":1,"name":"100%"},再去解码的时候就会出现报错

解决

只需要将存在%字符串的内容替换成为%25

const toPercent25 = (URL) => {
  if(URI.indexOf('%') > -1) {
    return URI.replace(/%/g,'%25')
  }else{
    return URI;
  }
}

由于我是解码前编码过,所以在编码的时候先执行函数替换掉,然后在解码前时候再执行一遍函数

最后修改:2024 年 06 月 19 日
如果觉得我的文章对你有用,请随意赞赏