[AS3]AS3中UTF-8与GB2312编码的类文件示例
国内常用的网络编码格式有UTF-8、GB2312、GBK,以及繁体字的BIG5,这几个编码之间的转换郁闷了好多人。
在ActionScript 3 内部无论出和入都统一使用Unicode,但服务器那边却是千奇百怪的编码,例如Google使用UTF-8,百度似乎是GBK。于是向百度这样的服务端 发出URLRequest请求百分百会出现乱码,无论设置什么Content Type 或者Post Method都如此,因为AS3输出的是UTF,而百度不接受这样的编码。而URLRequest本身也不支持自定义编码,百度服务端用什么编码也不是我 们能控制的,所以烦死人的问题就这样出来了。唯一能让我们控制的只有AS3,所以解决办法还是要从AS3上去考虑。浪费了大量时间去查阅,基本没有人提到 URL编码的问题。最后终于找到解决的思路,就是利用ByteArray对象的编码转换和存储功能,活用ByteArray类,能处理绝大部分的AS3编码问题。
- package com.nosword.string
- {
- import flash.utils.ByteArray;
- public class UrlMultiEncode
- {
- // cuplayer.com
- public function UrlMultiEncode():void
- {
- }
- public static function urlencodeGB2312(str:String):String{
- var result:String ="";
- var byte:ByteArray =new ByteArray();
- byte.writeMultiByte(str,"gb2312");
- for(var i:int;i<byte.length;i++){
- result += escape(String.fromCharCode(byte[i]));
- }
- return result;
- }
- public static function urlencodeBIG5(str:String):String{
- var result:String ="";
- var byte:ByteArray =new ByteArray();
- byte.writeMultiByte(str,"big5");
- for(var i:int;i<byte.length;i++){
- result += escape(String.fromCharCode(byte[i]));
- }
- return result;
- }
- public static function urlencodeGBK(str:String):String{
- var result:String ="";
- var byte:ByteArray =new ByteArray();
- byte.writeMultiByte(str,"gbk");
- for(var i:int;i<byte.length;i++){
- result += escape(String.fromCharCode(byte[i]));
- }
- // trace(result);
- return result;
- }
- }
- }
- // ==============================================================
- /*
- cuplayer.com提示:使用方法。从源代码那里可以看到是静态的函数调用,即:
- import com.nosword.string.UrlMultiEncode;
- ...
- ..
- trace(UrlMultiEncode.urlencodeGB2312("北京欢迎你"));
- ..
- 显示结果就是“%B1%B1%BE%A9%BB%B6%D3%AD%C4%E3”,
用编码转换小工具解码对比,完全一致,支持不同编码格式的Urlencode终于成功了。- */
热门文章推荐
- [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示例