天天看點

url中特殊字元轉義為原始字元

1.參數資訊在url中傳遞的時候url裡面的特殊字元轉義的情況,但是在加載的時候可能會無法加載轉義後的url資訊

轉譯規則

空格 用%20代替

     " 用%22代替

     # 用%23代替

    % 用%25代替

    &用%26代替

    ( 用%28代替

    ) 用%29代替

   + 用%2B代替

    , 用%2C代替

    / 用%2F代替

    : 用%3A代替

    ; 用%3B代替

   < 用%3C代替

   = 用%3D代替

   > 用%3E代替

   ? 用%3F代替

   @ 用%40代替

    \ 用%5C代替

    | 用%7C代替
           

url中特殊字元轉義為原始字元函數

function decodeUrl (url) {
  const codes = [
    {
      key: '%20',
      value: ' '
    },
    {
      key: '%22',
      value: '\'\''
    },
    {
      key: '%23',
      value: '#'
    },
    {
      key: '%25',
      value: '%'
    },
    {
      key: '%26',
      value: '&'
    },
    {
      key: '%28',
      value: '('
    },
    {
      key: '%29',
      value: ')'
    },
    {
      key: '%2B',
      value: '+'
    },
    {
      key: '%2C',
      value: ','
    },
    {
      key: '%2F',
      value: '/'
    },
    {
      key: '%3A',
      value: ':'
    },
    {
      key: '%3B',
      value: ';'
    },
    {
      key: '%3C',
      value: '<'
    },
    {
      key: '%3D',
      value: '='
    },
    {
      key: '%3E',
      value: '>'
    },
    {
      key: '%3F',
      value: '?'
    },
    {
      key: '%40',
      value: '@'
    },
    {
      key: '%5C',
      value: '\\'
    },
    {
      key: '%7C',
      value: '|'
    },
  ];
  for (let item of codes) {
    if (url.includes(item.key)) {
      const targetValue = url.replace(item.key, item.value);
      return this.decodeUrl(targetValue);
    }
  }
  return url;
};
           

繼續閱讀