<b>Flash AS办理中文mp3乱码</b>[Flash设计]
本文“<b>Flash AS办理中文mp3乱码</b>[Flash设计]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
Flash假如MP3的ID3标签利用GB2312编码,那么在Flash脚本输出时是乱码的
代码1
var s:Sound=new Sound(this);
s.loadSound("dxh.mp3",false);
s.onID3=function(){
trace(this.id3.songname);
}
输出后果是:
?&IExcl;???
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("%B6%A1%CF%E3%BB%A8"));
输出后果是:
丁香花
那么为什么代码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));
}
后果是:
%3F%3F%3F%3F%3F%A1%A7
问题的缘由我们找到了,只要将GB2312转换成UTF-8编码就可以显示正常了,但是假如转换呢,大家注意看代码2,我再测试一下设法
代码4:
System.useCodepage=true;
var gb:String=unescape("%B6%A1%CF%E3%BB%A8");
System.useCodepage=false;
trace(gb);
trace(escape(gb));
输出后果:
丁香花
%E4%B8%81%E9%A6%99%E8%8A%B1
第二行就是“丁香花”的UTF-8编码,阐明已经转换成功了,我们来具体实现这个历程
class lm.utils.LUTF {&n漀祰楲桧???水???o呀?bsp;
public function toUTF(source:String):String{
var target:String="";
for(var i=0;i<source.length;i++){
target+=this.codeTohex(source.charCodeAt(i));
}
System.useCodepage=true;
target=unescape(target);
System.useCodepage=false;
return target;
}
private function codeTohex(code:Number):String{
var low:Number=code%16;
var high:Number=(code-low)/16;
return "%"+hex(high)+hex(low);
}
private function hex(code:Number):String{
switch(code){
case 10:
return "A";
break;
case 11:
return "B";
break;
case 12:
return "C";
break;
case 13:
return "D";
break;
case 14:
return "E";
break;
case 15:
return "F";
break;
default:
return String(code);
break;
}
}
}
我们再来测试一下
import lm.utils.LUTF;
var u=new LUTF();
var s:Sound=new Sound(this);
s.loadSound("dxh.mp3",false);
s.onID3=function(){
var songname:String=_root.u.toUTF(this.id3.songname);
trace(songname);
}
输出后果:
丁香花
到此为此我们已包办理了这个乱码问题,利用这个本领也可以办理其他的乱码问题!
以上是“<b>Flash AS办理中文mp3乱码</b>[Flash设计]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |