用AS2解决中文ID3的乱码,用AS2解决中文ID3的乱码
【 tulaoshi.com - Flash 】
flash如果的ID3标签使用GB2312编码,那么在FLASH脚本输出时是乱码的
代码1
var s:Sound=new Sound(this);
s.loadSound("dxh.mp3",false);
s.onID3=function(){
trace(this.id3.songname);
}
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/flash/)(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/flash/)输出结果是:
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));
}
}
System.useCodepage=true;
trace(unescape("%B6%A1%CF%E3%BB%A8"));
那么为什么代码1出现乱码现象,是因为FLASH将GB2312当作了UTF-8来解释,我们再来测试一下:
代码3:
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/flash/)(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/flash/)var s:Sound=new Sound(this);
s.loadSound("dxh.mp3",false);
s.onID3=function(){
var songname:String=this.id3.songname;
trace(escape(songname));
}
代码4:
System.useCodepage=true;
var gb:String=unescape("%B6%A1%CF%E3%BB%A8");
System.useCodepage=false;
trace(gb);
trace(escape(gb));
第二行就是“丁香花”的UTF-8编码,说明已经转换成功了,我们来具体实现这个过程
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/flash/)(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/flash/)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;
}
}
}
[next] (本文来源于图老师网站,更多请访问http://www.tulaoshi.com/flash/)(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/flash/)
我们再来测试一下
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/flash/)(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/flash/)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);
}
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/flash/)(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/flash/)输出结果:
到此为此我们已经解决了这个乱码问题,使用这个技巧也可以解决的乱码问题!
来源:http://www.tulaoshi.com/n/20160129/1491980.html
看过《用AS2解决中文ID3的乱码》的人还看了以下文章 更多>>