encodeURI decodeURI

encodeURL是 编码整个URL,所以不会转义分隔符(如 / ? # ),意味着不能正确处理其组件包含这些字符的URL

  1. // 编码
  2. encodeURI("https://www.baidu.com?中文 / 、 ? #")
  3. // "https://www.baidu.com?%E4%B8%AD%E6%96%87%20/%20%E3%80%81%20?%20#"
  4. // ? / # 无法转义
  5. // 解码
  6. decodeURI("https://www.baidu.com?%E4%B8%AD%E6%96%87%20/%20%E3%80%81%20?%20#")
  7. // "https://www.baidu.com?中文 / 、 ? #"

encodeURIComponent decodeURIComponent

专门用来转义URL的单个组件,他们会转移 ? / # 字符。另外它会吧查询中的空格转为%20,实际查询参数中的空格应该被转义成+;

//    编码
encodeURIComponent("https://www.baidu.com?中文  ? / #")
//    "https%3A%2F%2Fwww.baidu.com%3F%E4%B8%AD%E6%96%87%20%20%3F%20%2F%20%23"

//    解码
decodeURIComponent("https%3A%2F%2Fwww.baidu.com%3F%E4%B8%AD%E6%96%87%20%20%3F%20%2F%20%23")
//    "https://www.baidu.com?中文  ? / #"