请使用firefox,chrome等最新浏览器浏览本站。

javascript escape,encodeURI,encodeURIComponent区别

js+jquery 阿豹 460次浏览 1个评论 扫描二维码

escape

escape和它们不是同一类, 简单来说,escape是对字符串(string)进行编码(而另外两种是对URL),作用是让它们在所有电脑上可读。
编码之后的效果是%XX或者%uXXXX这种形式。
其中 ASCII字母 数字 @*/+ 这几个字符不会被编码,其余的都会。

对应解码方法:unecape

    var str = "http://www.huanhuba.com/index.html?name=阿豹&id=11"
    console.log(escape(str));

    输出: http%3A//www.huanhuba.com/index.html%3Fname%3D%u963F%u8C79%26id%3D11

encodeURI和encodeURIComponent

对URL编码是常见的事,所以这两个方法应该是实际中要特别注意的。
它们都是编码URL,唯一区别就是编码的字符范围,其中
encodeURI方法不会对下列字符编码 ASCII字母 数字 ~!@#$&*()=:/,;?+’
encodeURIComponent方法不会对下列字符编码 ASCII字母 数字 ~!*()’
所以encodeURIComponent比encodeURI编码的范围更大。
encodeURIComponent会把 http:// 编码成 http%3A%2F%2F 而encodeURI却不会

encodeURI 对应解码方法:decodeURI
encodeURIComponent对应解码方法:decodeURIComponent

   var str = "http://www.huanhuba.com/index.html?name=阿豹&id=11"
    console.log(encodeURI(str));
    console.log(encodeURIComponent(str));

    输出: 
        http://www.huanhuba.com/index.html?name=%E9%98%BF%E8%B1%B9&id=11
index.html:47 
        http%3A%2F%2Fwww.huanhuba.com%2Findex.html%3Fname%3D%E9%98%BF%E8%B1%B9%26id%3D11

使用

1、如果只是编码字符串,不和URL有半毛钱关系,那么用escape。
2、如果你需要编码整个URL,然后需要使用这个URL,那么用encodeURI。(因为encodeURI不会对http://进行编码)
3、当你需要编码URL中的参数的时候,那么encodeURIComponent是最好方法。


喜欢 (10)or分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到
(1)个小伙伴在吐槽
  1. 好的内容让人过目难忘!
    逆向直销网赚2016-08-31 08:20 回复