请写出AS3加载GB2312编码的文本,如何才能真正的解决乱码问题。
AS3中,System.useCodePage 对url编码和escape编码的函数都没有影响了。不论什么设置,都仍然用utf8来处理。
从编码到字符的转换,AS3不能用chr()函数了,只剩下String.fromCharCode()方法了。而这个方法还只支持utf8,不支持别的字符集。
如果需要从gb2312的编码到汉字的转换,需要借助AS3新增的ByteArray类,实现方法如下:
代码
var loader:URLLoader = new URLLoader(new URLRequest("x.html"));
loader.dataFormat = URLLoaderDataFormat.BINARY;
loader.addEventListener(Event.COMPLETE, complete);
function complete(event:Event):void {
var BA:ByteArray = new ByteArray;
BA.writeBytes((event.target as URLLoader).data);
BA.position = 0;
trace(BA.readMultiByte(BA.length,"gb2312"));
}
loader.dataFormat = URLLoaderDataFormat.BINARY;
loader.addEventListener(Event.COMPLETE, complete);
function complete(event:Event):void {
var BA:ByteArray = new ByteArray;
BA.writeBytes((event.target as URLLoader).data);
BA.position = 0;
trace(BA.readMultiByte(BA.length,"gb2312"));
}