1NetMedia_Blog

<< ASP获取数据库指定表的列数和列名...  类别: Flash 动态增加表格行(嵌套) >>
AS2.0与AS3.0编码解码方法的区别
[ 日期: 2013-07-12 2:37:45 PM | 作者: admin | 来源: 本站整理 | 人气:3968 | 晴天 | 心情: +2 ] 字号: 【
急速栏目链接:
标签:escape  |  编码  |  解码  |  
最近发现在as2.0语言中用unescape()对网页以UTF-8 格式编码的数据进行解码,数据显示正确,没发现乱码情况,但在as3.0中用同样的方法进行解码时,却依然是乱码。 对比一下as2和as3中的escape()的官方说明:

as2: escape(expression:String) : String

将参数转换为字符串,并以 URL 编码格式对其进行编码,在这种格式中,所有非字母数字的字符都替换为 % 十六进制序列。当用于 URL 编码的字符串中时,百分号 (%) 用于引入转义字符,不与模运算符 (%) 等效。

as3: 将参数 str 作为字符串计算,从 URL 编码格式解码该字符串(将所有十六进制序列转换成 ASCII 字符),并返回该字符串。

实际上在as3中并不是所有非字母数字的字符都可被转义只是大部分而已,比如:@ - _ . * + / 这7个特殊字符不再被转义了。
特别要注意的是两者对中文字的转义更是不同,所以在as2.0用unescape()能正确解码的数据,放在as3.0上并不能得到相同的数据。

然而as3.0新增了几个用于编码解码函数,encodeURI,encodeURIComponent,decodeURI,decodeURIComponent。测试时发现AS3中的encodeURI和decodeURI与AS2中的escape和 unescape对数据的处理基本一样,也就是说在as2.0中用unescape()能正确解码的数据在as3.0上用decodeURI()方法则基本能得出同样的数据。但还有个要注意的地方,有一小组基本字符的字符不会由 encodeURI 函数转换为 UTF-8 转义序列的基本字符的整个集合。如下表:

未编码的字符
0 1 2 3 4 5 6 7 8 9
a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
; / ? : @ & = + $ , #
- _ . ! ~ * ' ( )

   
Rss Comment  

没有相关评论

发表评论
请先注册,才能发表评论!
- 注册 -