1、escape 和 unescape
escape不能直接用于URL的编码。真正的作用是返回一个字符的Unicode编码值。(不属于对URL的编码,属于对字符编码)
var a = escape("你好,JS");
// "%u4F60%u597D%uFF0CJS"
unescape解码
var b = unescape("%u4F60%u597D%uFF0CJS");//"你好,JS"
2、encodeURI 和 decodeURI
encodeURI把字符串采用UTF-8编码格式转化为escape格式的字符串。
var url = "http://localhost:8080/home?a=张三";
encodeURI(url) --> http://localhost:8080/home?a=%E5%BC%A0%E4%B8%89
decodeURI把escape格式的字符串转化为原始的字符串。
var url = "http://localhost:8080/home?a=张三";
encodeURI(url) --> http://localhost:8080/home?a=%E5%BC%A0%E4%B8%89
decodeURI把escape格式的字符串转化为原始的字符串。
decodeURI("http://localhost:8080/home?a=%E5%BC%A0%E4%B8%89") -->
http://localhost:8080/home?a=张三
3、encodeURIComponent 和 decodeURIComponent
encodeURIComponent和encodeURI都是对URL编码。 ,不同的是编码的字符范围不一样
encodeURI方法不会对下列字符编码 ASCII字母、数字、~!@#$&*()=:/,;?+'
encodeURIComponent方法不会对下列字符编码 ASCII字母、数字、~!*()'
所以encodeURIComponent比encodeURI编码的范围更大。
实际例子来说,encodeURIComponent会把 http:// 编码成 http%3A%2F%2F 而encodeURI却不会。
使用场合
1、如果只是编码字符串,和URL无关,用escape
2、如果你需要编码整个URL,然后需要使用这个URL,那么用encodeURI。
3、当你需要编码URL中的参数的时候,使用encodeURIComponent。