Loving Coding & Visual Design

escape、encodeURI、encodeURIComponent的区别

escape、encodeURI、encodeURIComponent的区别主要在于编码的字符不同:
原始字符串:09az~!@#$%^&*()_+}{":|<>?`-=[];',./ 好的
escape字符串:09az%7E%21@%23%24%25%5E%26*%28%29_+%7D%7B%22%3A%7C%3C%3E%3F%60-%3D%5B%5D%3B%27%2C./%20%u597D%u7684
encodeURI字符串:09az~!@#$%25%5E&*()_+%7D%7B%22:%7C%3C%3E?%60-=%5B%5D;',./%20%E5%A5%BD%E7%9A%84
encodeURIComponent字符串:09az~!%40%23%24%25%5E%26*()_%2B%7D%7B%22%3A%7C%3C%3E%3F%60-%3D%5B%5D%3B'%2C.%2F%20%E5%A5%BD%E7%9A%84

escape() 不会转码 0到9a到z@*/_+.- 其他会被转码成%20的形式,中文则是%u597D的形式,属于ISO Latin字符集编码。

escape() 更加适合于QueryString中等号后面的英文数据的转码,例如:action=eacape('wo&ta')&list=1;

encodeURI() 不会转码 ~!@#$&*()_+:?-=;',./ 其他会被转码成%20的形式,属于UTF-8编码。

escape() 更加适合于GBK到UTF8页面的转码,同样页面编码的用escape就可以

encodeURIComponent() 不会转码  ~!*()_-'. 把采用UTF-8编码格式的字符串用escape的Latin字符编码。

encodeURIComponent()适合于URL不会被#字符截断,URL被当作URI字段的编码,因为/可以被转码。

URL里常用的字符:?=&#    所以encodeURI适合保持URL合法性,但是要转码URL的情况。空白在escape()被转成+,其它都是%20。



下一页


最 近 文 章

  1. 什么样的公司留不住人才? - Tue, 17 Aug 2010 08:19:34 +0000
  2. 分享 - 20100814 - Sat, 14 Aug 2010 04:25:57 +0000
  3. 最严格的外链验证机制 - Thu, 12 Aug 2010 13:50:28 +0000
  4. Paypal里面的零钱如何处理? - Thu, 12 Aug 2010 14:43:27 +0000
  5. 为什么公司会招聘不到合适的人? - Tue, 10 Aug 2010 08:42:08 +0000
  6. SGML、XML和HTML的关系 - Sun, 08 Aug 2010 17:00:20 +0000
  7. 到底是什么决定了我们的命运? - Sat, 07 Aug 2010 16:33:45 +0000
  8. 局域网可以上,但是无法ping通网关的问题 - Fri, 06 Aug 2010 05:55:17 +0000
  9. pubsubhubbub发布没有链接的问题 - Wed, 11 Aug 2010 15:17:02 +0000
  10. Google宣布停止研发Google Wave平台 - Thu, 05 Aug 2010 16:40:26 +0000