注册
 找回密码
 注册
江西广告网
查看: 279|回复: 0
打印 上一主题 下一主题

用AS2解决中文ID3的乱码 (1)

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2009-2-7 10:44:36 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
flash如果的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("丁香花")); 输出结果是: 丁香花 那么为什么代码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)); } 结果是: ?????¨ 问题的原因我们找到了,只要将GB2312转换成UTF-8编码就能显示正常了,可是如果转换呢,大家注意看代码2,我再测试一下想法 代码4: System.useCodepage=true; var gb:String=unescape("丁香花"); System.useCodepage=false; trace(gb); trace(escape(gb)); 输出结果: 丁香花 涓侀鑺
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表