URL编码方法

很多时候我们需要对url进行编码来进行传输,常用的对url编码的方式有2种encodeURI encodeURIComponent,相应的解码方法为:decodeURI decodeURIComponent。本文说明他们的区别和各自的使用场景。

区别

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

所以encodeURIComponentencodeURI编码的范围更大。
实际例子来说,encodeURIComponent会把 http://编码成http%3A%2F%2F 而encodeURI却不会。

var str = "http://www.cnlogs.com/blogs/my new blog";
var encodeStr = encodeURI(str); 
//http://www.cnlogs.com/blogs/my%20new%20blog
console.log(encodeStr)
var encodeComstr = encodeURIComponent(str) 
//http%3A%2F%2Fwww.cnlogs.com%2Fblogs%2Fmy%20new%20blog
//可见这个url已经不能正常访问
console.log(encodeComstr);
var ans = decodeURI(encodeStr)
console.log(ans)
ans = decodeURIComponent(encodeComstr)
console.log(ans)

场景

  • 如果你需要编码整个url,然后要使用这个url,使用encodeURI方法
  • 编码URL中的参数的时候,那么encodeURIComponent是最好方法
var param = "/user/newbook"; //param为参数
param = encodeURIComponent(param); //因为参数含有/,所以必须要用此方法
var url = "http://www.baidu.com?param=" + param;

你可能感兴趣的:(URL编码方法)