转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 电脑应用 >> 电脑技术 >> 正文
用AS2解决中文ID3的乱码         ★★★

用AS2解决中文ID3的乱码

作者:闵涛 文章来源:闵涛的学习笔记 点击数:727 更新时间:2005/1/20

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("%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<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);
}

输出结果:
丁香花
到此为此我们已经解决了这个乱码问题,使用这个技巧也可以解决其他的乱码问题!


[电脑技术]用AS2解决中文ID3的乱码  
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · 电脑技术  · 操作系统
    · 磁盘工具  · 视音频技术
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台