在做FLASH程序时常常会遇到乱码问题,比如在做一个读取同步歌词文件的程序时载入的全是乱码,这是一个让人很头疼的问题,有的人会说,那怕什么?把那个歌词的编码改成UTF-8不就行了吗?但是网站上的下载下来的同步歌词文件大都是ANSI编码的。我们要用的是直接就可以拿来用的。
前面一篇教程讲述的是Flash中解决中文字体的问题。
有很多人写了类来解决这个问题,但写出来的类都很复杂,根本不实用。
那么,难道就没有办法了吗?
当然有,并且这个办法还很简单,我在翻看FLASH CS3的帮助文档时一不小心发现了这个办法(嘿嘿,先自娱一下)。
AS3中有一个System类,只须一个简单的设置就行了。
请看示例:
package { import flash.system.*; import flash.display.Sprite; import flash.net.URLRequest; import flash.net.URLLoader; import flash.events.IOErrorEvent; import flash.events.Event; import fl.controls.TextArea; import flash.text.TextFormat; public class sys extends Sprite { private var myxml:XML; private var mytxt:TextArea=new TextArea ; private var req:URLRequest=new URLRequest("test.txt"); private var ul:URLLoader; private var tf:TextFormat=new TextFormat ; public function sys() { tf.size=14; tf.color=0xFF0000; mytxt.setSize(550,400); addChild(mytxt); System.useCodePage=true;//解决中文乱码 ul=new URLLoader(req); ul.addEventListener(IOErrorEvent.IO_ERROR,ioerror); ul.addEventListener(Event.COMPLETE,loaded); } private function loaded(event:Event) { mytxt.setStyle("textFormat",tf); myxml=XML(ul.data); mytxt.text=myxml; System.setClipboard(mytxt.text);//设置剪贴板文本 } private function ioerror(event:IOErrorEvent) { mytxt.text="无相关文件"; } } }