loading

encodeURI和encodeURIComponent的区别

它们都是编码URL,唯一区别就是编码的字符范围不一样

  • encodeURI方法不会对下列字符编码 ASCII字母 数字 ~!@#$&*()=:/,;?+
  • encodeURIComponent方法不会对下列字符编码 ASCII字母 数字 ~!*()

encodeURIComponentencodeURI编码的范围更大。

# 使用场景

比如

encodeURI("http://www.cnblogs.com/season-huang/some other thing");
1

编码后会变为

"http://www.cnblogs.com/season-huang/some%20other%20thing";
1

其中,空格被编码成了%20。但是如果你用了encodeURIComponent,那么结果变为

"http%3A%2F%2Fwww.cnblogs.com%2Fseason-huang%2Fsome%20other%20thing"
1

连 "/" 都被编码了,整个URL已经没法用了。

需要编码URL中的参数的时候,那么encodeURIComponent是最好方法

var param = "http://www.cnblogs.com/season-huang/"; //param为参数
param = encodeURIComponent(param);
var url = "http://www.cnblogs.com?next=" + param;
console.log(url) //"http://www.cnblogs.com?next=http%3A%2F%2Fwww.cnblogs.com%2Fseason-huang%2F"
1
2
3
4

使用场景区别

  • 如果是要对整个url进行编码,使用encodeURI
  • 如果链接后有参数,对参数进行编码使用encodeURIComponent
最近更新时间: 2021/08/25 17:25:09
最近更新
01
2023/07/03 00:00:00
02
2023/04/22 00:00:00
03
2023/02/16 00:00:00