Chinaunix首页 | 论坛 | 博客
  • 博客访问: 28937
  • 博文数量: 6
  • 博客积分: 1728
  • 博客等级: 大尉
  • 技术积分: 70
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-06 20:12
文章分类
文章存档

2010年(1)

2009年(5)

最近访客

分类:

2009-06-07 14:19:20

ID3v1只能存储本地编码的信息,自然同一个文件在不同平台上的乱码是必然的了,比如一个带有GBK编码ID3v1的mp3文件在日文windows xp中就是乱码。ID3v2支持本地编码,UTF-16, UTF-16BE(不带BOM)和UTF-8,但是很遗憾的是windows系统本身以及windows上面wmp、sonicstage等不支持utf-8的ID3v2,而Mac上面对UTF-16的支持和标准也有出入(主要是UTF-16的mp3在Mac上读不到封面图片)。ID3v2的文档里说一个ID3v2的TAG中所有的字符数据必须采用一致的编码方式,但经过我测试发现,如果APIC帧采用UTF-8或者本地编码(因为APIC帧里需要进行编码的只有一个结束字符"\0"),其他所有帧全部采用UTF-16,这样处理后的mp3对于windows和Mac上的常用播放器以及Linux上的rhythmbox和audacious,mplayer等等来说都可以正确读出所有信息(当然有些播放器本身不支持显示封面图片的功能)。

PS:
发现这个帖子的关注度比较高,估计前来光顾的都是那些发现mp3在Linux下面乱码的朋友。
如果你的mp3在linux乱码,那么不妨Google一下“mid3iconv”,不过你得确保你的mp3的tag是GBK编码的。这个办法的缺点是,当你使用mid3iconv转换编码之后,同一个文件再拿到Windows下面播放很可能就是乱码了。这对于那些使用Windows和Linux双系统的朋友可能还是有些不便。

比较完美一点的方法就是在Windows平台下面,用TTPlayer等播放器,将mp3文件的Tag转成UTF-16。这样转换后的mp3文件,在Linux和Windows下面常用的播放器中就不再乱码了。
阅读(1527) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~