欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Flash AS解决中文mp3乱码

程序员文章站 2022-06-28 20:52:34
Flash如果MP3的ID3标签使用GB2312编码,那么在Flash脚本输出时是乱码的 代码1 var s:Sound=new Sound(this); s.loadSound("dxh.mp3",false); s.onID3=function(){ trace... 08-10-06...
flash如果mp3的id3标签使用gb2312编码,那么在flash脚本输出时是乱码的
代码1
var s:sound=new sound(this);
s.loadsound("dxh.mp3",false);
s.onid3=function(){
trace(this.id3.songname);
}
输出结果是:
?¡???
dxh.mp3的id3v1的标签正确应该是songname="丁香花",看来flash在转码上出现了问题。我们来看看songname这个字符串中倒底是什么?
代码2:
var s:sound=new sound(this);
s.loadsound("dxh.mp3",false);
s.onid3=function(){
var songname:string=this.id3.songname;
for(var i=0;i<songname.length;i ){
trace(songname.charcodeat(i));
}
}
输出结果是:
182
161
207
227
187
168
我们使用计算器转换成16进制就是"b6 a1 cf e3 bb a8";
正好是"丁香花"的gb2312编码,我们还是用flash来试试

system.usecodepage=true;
trace(unescape("丁香花"));
输出结果是:
丁香花
那么为什么代码1出现乱码现象,是因为flash将gb2312当作了utf-8来解释,我们再来测试一下:
代码3:

var s:sound=new sound(this);
s.loadsound("dxh.mp3",false);
s.onid3=function(){
var songname:string=this.id3.songname;
trace(escape(songname));
}
结果是:
?????¨
问题的原因我们找到了,只要将gb2312转换成utf-8编码就能显示正常了,可是如果转换呢,大家注意看代码2,我再测试一下想法
代码4:

system.usecodepage=true;
var gb:string=unescape("丁香花");
system.usecodepage=false;
trace(gb);
trace(escape(gb));
输出结果:
丁香花
涓侀鑺