参考资料:http://hi.baidu.com/flondon/item/983b3af35b83fa13ce9f3291cookie
http://www.w3school.com.cn/js/jsref_escape.asp函数
escape() 函数可对字符串进行编码,这样就能够在全部的计算机上读取该字符串。解码:unescape()编码
encodeURI() 函数可把字符串做为 URI 进行编码。 解码:decodeURI()spa
encodeURIComponent() 函数可把字符串做为 URI 组件进行编码。解码:decodeURIComponent()code
共同点:ip
这三个函数均采用unicode字符集。unicode
不一样点:字符串
escape是将字符的unicode编码转化为16进制序列(转义序列,转义序列(escape sequences)),其不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z。get
encodeURI是将字符的unicode编码经过UTF-8来表示,其不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z。it
encodeURIComponent也是将字符的unicode编码经过UTF-8来表示,其与encodeURI的惟一区别就是它们不编码的字符有所差异,encodeURIComponent不编码的字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z。
使用场景
1. 传递参数时(GET方法)须要使用encodeURIComponent,这样组合的URL才不会被#、?、&等特殊字符所干扰。
2. 对URL(URL是一种URI)进行总体编码时使用encodeURI,这样就能够确保URL中的特殊含义字符(#、?、&、etc.)不被编码。
3. ECMAScript v3中反对对escape()的使用,并建议用encodeURI和encodeURIComponent代替,不过escape()依然被普遍的用于cookie的编码,由于escape()刚好编码了cookie中的非法字符而且对路径中常出现的“/”不进行编码。