宜昌本地软件开发与弱电工程服务商
项目咨询 · 快速响应
您当前的位置: > 博客2 > AS2与AS3技术

[AS3]AS3中UTF-8与GB2312编码的类文件示例

2016-10-13 00:16:48 点击量:11 标签: 收藏本文

国内常用的网络编码格式有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编码问题。

  1. package com.nosword.string 
  2.  import flash.utils.ByteArray; 
  3.  public class UrlMultiEncode 
  4.  { 
  5.     // cuplayer.com 
  6.   public function UrlMultiEncode():void 
  7.   { 
  8.   }   
  9.   public static function urlencodeGB2312(str:String):String{ 
  10.    var result:String =""
  11.    var byte:ByteArray =new ByteArray(); 
  12.    byte.writeMultiByte(str,"gb2312"); 
  13.    for(var i:int;i<byte.length;i++){ 
  14.     result += escape(String.fromCharCode(byte[i])); 
  15.    } 
  16.    return result; 
  17.   } 
  18.   public static function urlencodeBIG5(str:String):String{ 
  19.    var result:String =""
  20.    var byte:ByteArray =new ByteArray(); 
  21.    byte.writeMultiByte(str,"big5"); 
  22.    for(var i:int;i<byte.length;i++){ 
  23.     result += escape(String.fromCharCode(byte[i])); 
  24.    } 
  25.    return result; 
  26.   } 
  27.   public static function urlencodeGBK(str:String):String{ 
  28.    var result:String =""
  29.    var byte:ByteArray =new ByteArray(); 
  30.    byte.writeMultiByte(str,"gbk"); 
  31.    for(var i:int;i<byte.length;i++){ 
  32.     result += escape(String.fromCharCode(byte[i])); 
  33.    } 
  34. //   trace(result); 
  35.    return result; 
  36.   } 
  37.  } 
  38. // ============================================================== 
  39. /* 
  40. cuplayer.com提示:使用方法。从源代码那里可以看到是静态的函数调用,即: 
  41. import com.nosword.string.UrlMultiEncode; 
  42. ... 
  43. .. 
  44. trace(UrlMultiEncode.urlencodeGB2312("北京欢迎你")); 
  45. .. 
  46. 显示结果就是“%B1%B1%BE%A9%BB%B6%D3%AD%C4%E3”,
    用编码转换小工具解码对比,完全一致,支持不同编码格式的Urlencode终于成功了。 
  47.  
  48. */ 
ABOUT US
宜昌农人网络科技有限公司

我们是一家提供综合软件外包与弱电工程服务的技术公司。

业务涵盖定制软件、管理系统、网站、小程序、APP、系统集成、网络布线、监控安防、门禁、机房建设及长期技术维护。

公司地址:湖北省宜昌市伍家岗区东站二路6号三峡(宜昌)大数据产业园海洋馆二楼A203室