相关文章
北京网页设计html教学+HTML语法大全
网站制作DHTML编写经得起考验的可移植代码
网站设计字符串对象
北京网页设计教程/dreamweaver/入门 Dreamweaver 4 简明教程14(互动效果)
北京网站制作DreamwaverMX与ASP.NET(四)
北京网站建设FLASH MX 2004视频教程:宝泉奶粉广告制作(三)
网站设计dreamweaver mx教程二十九:添加文本和设置文本格式
企通互联Dreamweaver使用快技法十三则 [1]
网页设计FrontPage 2002扩充插件(一)
www.qitongnet.com改善用户体验之密码强度提示
品牌理念
北京网站建设最佳合作伙伴
北京网站建设专家企通互联
竭诚为您提供网站建设服务!
友好连接
文章搜索
你的位置:首页 >> 网站制作 >> 企通互联网页设计用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); 北京网页设计
}
输出结果是:北京网站制作
ⶂ㣂FONT>
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));企通互联 www.qitongnet.com输出结果:网站制作
丁香花北京网站制作
%E4%B8%81%E9%A6%99%E8%8A%B1
第二行就是“丁香花”的UTF-8编码,说明已经转换成功了,我们来具体实现这个过程
class lm.utils.LUTF {&n漀祰楲桧???水???o呀?\Zbsp;网页设计
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); 网页设计
}
输出结果:网站制作
丁香花北京网页设计
到此为此我们已经解决了这个乱码问题,使用这个技巧也可以解决其他的乱码问题!