在加载的mp3文件输出id3信息的时候,总是出现乱码.不论采用什么编码方式,很是烦人.
找了个解决的方法,比较实用,感谢作者.
代码如下:
package {
import flash.display.Sprite;
import flash.events.*;
import flash.media.Sound;
import flash.net.URLRequest;
import flash.utils.ByteArray;
public class ID3Encoder extends Sprite {
private var url:String = "test1.mp3";
private var iSound:Sound = new Sound();
public function ID3Encoder() {
var request:URLRequest = new URLRequest(url);
iSound.addEventListener(Event.ID3, Id3Handler);
iSound.load(request);
iSound.play();
}
private function Id3Handler(event:Event):void {
trace(String("歌曲ID3信息:"+EncodeUtf8(iSound.id3.songName)));
}
/*
*id3文件转义
*/
private function EncodeUtf8(str : String):String {
var oriByteArr : ByteArray = new ByteArray();
oriByteArr.writeUTFBytes(str);
var tempByteArr : ByteArray = new ByteArray();
trace(str);
for (var i = 0; i<oriByteArr.length; i++) {
if (oriByteArr[i] == 194) {
tempByteArr.writeByte(oriByteArr[i+1]);
i++;
} else if (oriByteArr[i] == 195) {
tempByteArr.writeByte(oriByteArr[i+1] + 64);
i++;
} else {
tempByteArr.writeByte(oriByteArr[i]);
}
}
tempByteArr.position = 0;
return tempByteArr.readMultiByte(tempByteArr.bytesAvailable,"chinese");
}
}
}
参考资料:
http://www.5uflash.com/Html/as3/223611653.html