AS2.0与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
; / ? : @ & = + $ , #
- _ . ! ~ * ' ( )
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例