解决ubuntu和Android的mp3乱码问题
2010-06-17 03:31:00 来源:WEB开发网android也是Linux系统,解决乱码的原理是一样的。
音频文件可以使用的tag版本非常多,mp3大多使用这三个:ID3v1、ID3v2、APEv2,每个版本下又有多个小版本。Windows只能支持ID3v1,ID3v1其实是不支持多语言的,但因为Windows平台使用本地语言编码页去处理那些多字节字符串,简体系统中文字符能够显示出来,倘若来了个Shift-JIS的ID3v1,Windows就只能乱码了。这种情况和txt是一样的。如果将mp3的ID3v1抹掉,Windows自身的资源管理器和media player将不能识别mp3信息。ID3v2和APEv2都支持Unicode,这才是真正的多语言支持。让播放器去猜ID3v1的编码类型是最笨的方法。因此并不是说Windows的编码兼容性好,Linux就差,仅采用多字节编码去写ID3v1才是真正的罪魁祸首,杯具的是大多数mp3文件都是这样子,而Windows是其推手。
标签的使用优先度是播放器的事,支持是否也是播放器的事。一般而言,大多数播放器都支持ID3v2和ID3v1,ID3v1的优先度会设得比较低。 Foobar2000支持APEv2、ID3v2、ID3v1,优先度应该是APEv2最高,ID3v1最低。在Foobar2000上转换出来的mp3 的兼容性相当好,fb2k默认会写ID3v2(UTF-8)和ID3v1(本地编码),ID3v1实现了Windows平台(资源管理器和wmp)的兼容,ID3v2实现了多语言支持。Linux的播放器一般都支持ID3v2,而且优先度比ID3v1高,因此播放这些mp3不会乱码。
故一个较好的方案是:UTF-8的ID3v2+本地编码的ID3v1。这个工作fb2k 0.9版本以上可以完成(0.8.3不清楚)。
操作如下图所示,首先选中要转换的曲目,弹出右键菜单,tagging->MP3 Tag Types
勾选ID3v1和ID3v2,APEv2可选可不选,但Linux下很多播放器都不支持APEv2,所以建议不选。Updates files,完毕。
这可以为ID3v2缺失的mp3文件重建UTF-8的ID3v2。
倘若在ubuntu下仍然有乱码,不用怀疑,那是因为ID3v2不是UTF-8编码。ID3v2是可以存放本地多字节编码的,mp3若已经存在 ID3v2,fb2k会跳过而不重新生成,导致ubuntu下仍然是乱码。这种情况我们可以借助APEv2做中介(APEv2只支持UTF-8,且字段比 ID3v1丰富)。勾选APEv2,Update files(生成UTF-8的APEv2)?>去掉ID3v2的勾,Update
更多精彩
赞助商链接