用AS2彻底解决onID3的乱码
作者 佚名技术
来源 服务器技术
浏览
发布时间 2012-07-12
如果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 } }输出结果是: 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 { public function toUTF(source:String):String{ var target:String=""; for(var i=0;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); }输出结果: 丁香花 到此为此我们已经解决了这个乱码问题,使用这个技巧也可以解决其他的乱码问题! 关键词: |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于用AS2彻底解决onID3的乱码的所有评论