网站公告列表

没有公告

加入收藏
设为首页
联系站长
轻松学电脑>>图形图像>>Flash教程>>用AS2解决中文ID3的乱码
双击滚屏阅读

用AS2解决中文ID3的乱码

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;

[1] [2] 下一页

 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 广告
    阅读top10
    固顶文章制作一个骄艳的鲜花情…
    普通文章用AS2解决中文ID3的乱…
    普通文章学习笔记:飘动的汽泡
    普通文章Flash常用效果-移动模…
    普通文章基于图像的虚拟现实-…
    普通文章Flash 与 html 的一些…
    普通文章浅析三维全景
    普通文章flash remoting 实践
    普通文章Flash鼠绘着色入门教程
    普通文章Flash角色透视行走动作…
    普通文章Flash 与三维全景结合
    普通文章一个Flash调色板
    普通文章ActionScript 2 编译工…
    普通文章Flash Player 8 新特性
    查看用AS2解决中文ID3的乱码全部内容
    本站提供:电脑教程 网页制作 Flash教程 PhotoShop教程等免费教程。
    Copyright © 2006-2008轻松学电脑All Rights Reserved