AS3根据编码类型解析文本

6 篇文章 0 订阅

package {

import flash.text.TextField;

import flash.utils.ByteArray;

import flash.events.MouseEvent;

import flash.events.Event;

import flash.net.FileReference;

import flash.display.MovieClip;


public class Test extends MovieClip {

private var ref : FileReference;

private var btn_browse : MovieClip;

private var textField : TextField;



public function Test() {

ref = new FileReference();

ref.addEventListener(Event.SELECT, file_select);

ref.addEventListener(Event.COMPLETE, file_complete);



btn_browse = this["_btn_browse"] as MovieClip;

btn_browse.buttonMode = true;

btn_browse.addEventListener(MouseEvent.CLICK, btn_browse_click);



textField = this["_text"] as TextField;

}



private function btn_browse_click(event : MouseEvent) : void {

ref.browse();

}



private function file_select(event : Event) : void {

ref.load();

}



private function file_complete(event : Event) : void {

//解析字节数组

var data : ByteArray = ref.data;

var type : String = getFileType(data);

var length : uint = data.length;

var result : String = "";

switch(type) {

case "ANSI" :

data.position = 0;

result = data.readMultiByte(length-data.position, "gb2312");

break;

case "Unicode" :

case "Unicode big endian" :

case "UTF-8" :

result=data.toString();

break;

}

textField.text = type + "nn" + result;

textField.scrollV=1;

}



//根据文件头信息判断文本文件编码类型;

private function getFileType(fileData : ByteArray) : String {

var b0 : int = fileData.readUnsignedByte();

var b1 : int = fileData.readUnsignedByte();

var fileType : String = "ANSI";

if(b0 == 0xFF && b1 == 0xFE) {

fileType = "Unicode";

}else if(b0 == 0xFE && b1 == 0xFF) {

fileType = "Unicode big endian";

}else if(b0 == 0xEF && b1 == 0xBB) {

fileType = "UTF-8";

}

return fileType;

}

}

}

http://www.codesky.net/article/201203/177590.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值