当前位置:首页 前端开发 正文
+1°

JS中的escape、encodeURI和encodeURIComponent使用比较

2012年08月27日 | 作者: 米豆网 - 1000seo | 分类: 前端开发 | 

j‍avascript中存在几种对URL字符串进行编码的方法:escape(),encodeURI(),以及encodeURIComponent()。这几种编码所起的作用各不相同。

  • escape() 方法

采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。

不会被此方法编码的字符: @ * / +

  • encodeURI() 方法

把URI字符串采用UTF-8编码格式转化成escape格式的字符串。

不会被此方法编码的字符:! @ # $& * ( ) = : / ; ? + ‘

  • encodeURIComponent() 方法

把 URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 / 等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。

不会被此方法编码的字符:! * ( ) ‘

因 此,对于中文字符串来说,如果不希望把字符串编码格式转化成UTF-8格式的(比如原页面和目标页面的charset是一致的时候),只需要使用 escape。如果你的页面是GB2312或者其他的编码,而接受参数的页面是UTF-8编码的,就要采用encodeURI或者 encodeURIComponent。

另外,encodeURI/encodeURIComponent是在javascript1.5之后引进的,escape则在javascript1.0版本就有。

上面三个函数对应的解码函数分别是unescape、decodeURI和decodeURIComponent

j‍avascript在发送url请求带中文时会有乱码问题:
例如 var url=”http://www.1000seo.com/getbody.php?method=get&name=’米豆网'”;
处理的方法是 对中文进行二次转码   encodeURI(encodeURI(‘米豆网’)) 而我们通常只做一次转码发现还是不对。

本文章由 米豆网 - 1000seo 于2012年08月27日发布在前端开发分类下,您可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
+复制链接 转载请注明:JS中的escape、encodeURI和encodeURIComponent使用比较-米豆网
关键字:, , , , ,

好文章就要一起分享!

更多

目前共有1条留言

  • 就是哈哈

    1楼
    2012 年 08 月 29 日 07:22:28 回复

    有对我有用的,转到QQ空间了,嘿嘿

发表评论

你的大名(必填)

你的邮箱(必填)

你的网站(选填)

评论内容(必填)

😉 😐 😡 😈 🙂 😯 🙁 🙄 😛 😳 😮 mrgreen.png 😆 💡 😀 👿 😥 😎 ➡ 😕 ❓ ❗