AS3根据编码类型解析文本

本文介绍了一个使用ActionScript 3.0编写的简单应用程序,该程序能够读取文本文件并自动识别其编码格式(如ANSI、Unicode、UTF-8等)。通过分析文件头信息来确定编码方式,并提供了相应的解析方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值