针对云开的用as2解决onid3的乱码作了一点改进,可以在mx中使用
改动:
- 将类封装成简单的function
- 运行前后不改变原来的 system.usecodepage 值
代码:
function ansi2utf(ansi_string) {
var temp = !(!system.usecodepage);
system.usecodepage = true;
var code = "";
for (var i = 0; i<ansi_string.length; i++) {
code += "%"+ansi_string.charcodeat(i).tostring(16);
}
var result = unescape(code);
system.usecodepage = temp;
return result;
}
使用示例:
my_sound = new sound();
my_sound.onid3 = function() {
var songname = ansi2utf(this.id3.songname);
trace("result: "+songname);
};
my_sound.loadsound("music.mp3", false);
另外,在flash帮助中有这样一段话:
在文档中请只设置一次 system.usecodepage 属性;不要为了使播放器将某些外部文件解释为 unicode 并将另一些文件解释为其它编码,而多次使用该属性,原因是这样做会产生无法预料的结果。
看来这个函数可能会带来隐藏的问题,至于到底是什幺问题,我目前还没有遇到。解决mp3id3乱码问题还有其它办法,比如建立utf-8和gb2312/big5编码的映像表等,但是都没有这个简单。
现存的问题:
- 只能转换本地编码到utf-8,即:简体系统读取繁体中文id3仍然会有乱码,同理繁体系统也是
- 只能转换 id3 v2.0,不能转 id3 v1.0
- 只能转换id3,对于更加广泛的txt等外部文本,转换方法仍然存在问题
到论坛讨论
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器