Actionscript 3.0对读入的文件进行编码转换(GBK->UNICODE)
星期三, 10月 29th, 2008今天在flex3.0 中,要读入一个gbk编码的文件,然而一显示,却是乱码。这是因为flex默认的编码格式是unicode,而gbk编码则被视为单字节的西欧字符的组合了。
public var loader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest(”http://someurl”);
loader.dataFormat = “binary”;
loader.load(request);
loader.addEventListener(Event.COMPLETE, checkusernameResult);
public var resultstr:String;
public function checkusernameResult(e:Event):void {
var byteArray:ByteArray = ByteArray(loader.data);
try {
resultstr = byteArray.readMultiByte(byteArray.length, “GBK”);
}
catch(e:EOFError) {
}
}
其中黑体的一句很重要,loader的默认的dataFormat是”text”,如果用text格式读进来,那数据在loader里面已经是unicode的西欧字符方式来保存,也没有办法直接赋值给ByteArray。
ByteArray的构造函数里面必须也是一个ByteArray,当你用binary读进URLLoader中时,data的格式自动转为ByteArray,跟原始数据是一致的。
ByteArray的readMultiByte方法可从ByteArray的数据中按照指定编码读出数据。
===================================================
虽然说adobe的文档很多很全,但是要找到这些合适自己使用的用例还是比较困难的,上面使用binary读入的代码是猜出来的……