前端传参中的特殊字符转码问题

14 阅读1分钟

事情的起因是这样的,本来联调的很愉快。接口突然报了个400。

问题定位: [大小] 哈哈 ->这种英文字符+中文汉字的字符串转码后。[]并没有被转码。而中文浏览器会自动转码导致的。

问题解决:可以手动转两次码。将特殊字符也转码。但需要后端去手动解码,比较麻烦。所以我在封了一个公共方法。手动对特殊字符转码。

export const encodeURIComponentUrlParam = (url: string) => {
  return encodeURIComponent(url).
    replace(/\@/g, '%40').
    replace(/\:/g, '%3A').
    replace(/\$/g, '%24').
    replace(/\,/g, '%2C').
    replace(/\+/g, '%20').
    replace(/\[/g, '%5B').
    replace(/\]/g, '%5D').
    replace(/\(/g, '%28').
    replace(/\)/g, '%29').
    replace(/\s/g, '%20');
}