码迷,mamicode.com
首页 > 其他好文 > 详细

编码解码

时间:2014-12-22 15:48:24      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

概述

对于uri的编解码,在js中有3对函数,分别是escape/unescape,encodeURI/decodeURI,encodeURIComponent/decodeURIComponent。

它们的适用范围不同,而且遵循的编码规范也不同。

对于上述函数而言,所有的ASCII的字符编码相同,采用%XX的形式。而对于unicode字符,escape编码形式为%uXXXX,而其余两个函数

则先将unicode字符按照utf-8对其进行编码,然后继续进行uri编码(百分号)。对于中文字符,每个字符用urf-8编码则为3个字节,然后在

每个字节前面加上%即可。如:‘中国’按照urf-8编码为"0xE40xB80xAD0xE50x9B0xBD",进而对该6个字节进行百分号编码:

"%E4%B8%AD%E5%9B%BD"。

 

区别

这三对函数的安全字符(即需要编码的字符)范围也不同,如下所示:

  • escape(69个):*/@+-._0-9a-zA-Z
  • encodeURI(82个):!#$&‘()*+,/:;=?@-._~0-9a-zA-Z
  • encodeURIComponent(71个):!‘()*-._~0-9a-zA-Z

现在对比encodeURI和encodeURIComponent,从名称上可看出encodeURI是针对整个URI进行编码,我们以特殊的URI--URL来说明下。

对于URL为http://www.baidu.com而言,如果用encodeURI编码,返回的仍是“http://www.baidu.com”;如果用encodeURIComponent

编码,返回的为"http%3A%2F%2Fwww.baidu.com"。

encodeURI所针对的是整个URI,并不会对分隔符如/,?,=符号进行编码,否则破坏了URI的原有含义,而encodeURIComponent则是针对URI的

某一部分进行编码,如查询字符串部分的&会被转义。

编码解码

标签:

原文地址:http://www.cnblogs.com/accordion/p/4178289.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!