·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

AS2.0与AS3.0编码解码方法的区别

时间:2011-08-19 10:57CuPlayer.com
最近发现在as2.0语言中用unescape()对网页以UTF-8 格式编码的数据进行解码,数据显示正确,没发现乱码情况,但在as3.0中用同样的方法进行解码时,却依然是乱码

  最近发现在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
; / ? : @ & = + $ , #
- _ . ! ~ * ' ( )

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器