解决AS3乱码问题

解决AS3乱码问题

原文链接:http://bbs.blueidea.com/thread-2887754-1-1.html

彻底解决乱码:
Flash 5及其之前版本的编码标准是以系统编码为标准的.但Flash MX以后开始支持Unicode,并将Flash Player 6或以上版本预设编码为Unicode,如果Flash载入非Unicode编码时,(比如一个ANSI方式保存的文件)就会出现乱码.
解决方法有两种:
第一种是下策,即强迫Flash使用Flash 5的编码方法,在第一帧加入 System.useCodepage = true;这种方法虽然暂时解决了中文系统的乱码问题,但对程序的兼容性和扩展性极为不利.比如:你用的是GB(简体中文)编码的系统,当一个不是用GB编码的系统观看你的Flash时,他看到的依然是乱码.6 |5 z: d! j; ~7 h
第二种是上策,即利用Unicode编码的一个最常用的实现方法”UTF-8″(Unicode Transformation Format – 8 bit)来实现,最简单的办法就是在保存文件时用编辑软件(比如Windows记事本)保存时在”编码”选项处选择”UTF-8″编码形式,形成文本编码和Flash编码统一.从而消灭乱码.

可这样不算彻底解决。Flash加载的很多文件都可能不是自己创建的,也不能要求别人也转换编码保存一次啊

其实这个问题也是可以解决的,在flash里面提供了如何实现代码转换的方法,
txt.wordWrap = true;
var urlloader:URLStream = new URLStream ();
var onComplete:Function = function ( event:Event ):void {
var str:String = urlloader.readMultiByte ( urlloader.bytesAvailable , “gb2312″ );
var xml:XML = new XML ( str );
txt.text = xml.toString( );
}
urlloader.addEventListener ( Event.COMPLETE , onComplete );
//具体地址写在这里
//txt里面可能使用gbk等编码方式进行保存和发送的……
//<!--l version="1.0" encoding="gbk"-->
var req:URLRequest = new URLRequest (“”);
urlloader.load (req);

URLStream对象的readMultiByte 方法—————官方说明:
使用指定的字符集从字节流中读取指定长度的多字节字符串。

参数 length:uint — 要从字节流中读取的字节数。

charSet:String — 表示用于解释字节的字符集的字符串。 可能的字符集字符串包括 “shift_jis”、”CN-GB”、”iso-8859-1″”等。 有关完整列表,请参阅Supported Character 。
注意:如果当前系统无法识别 charSet 参数的值,则 Flash Player 将采用系统的默认代码页作为字符集。 例如,charSet 参数的值(如在使用 01 而不是 1 的 myTest.readMultiByte(22, “iso-8859-01″) 中)可能在您的开发计算机上起作用,但在其它计算机上可能不起作用。 在另一台计算机上,Flash Player 将使用系统的默认代码页。

返回 String — UTF-8 编码的字符串。

引发 EOFError — 可读取的数据不足。

关键就在于 不是使用URLLoader进行传输,而是使用URLStream进行传输,通过URLStream对象的readMultiByte 方法进行代码转换,这样中文传输就不会有乱码了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值