java id3v2 乱码,Mp3标签乱码问题分析与解决方案

出自Linux Wiki

提示:此文已超过 6 年(2380 天)未更新,如发现内容过时或有误,欢迎改进:)

目前Linux中流行的很多播放器经常不能正确显示如歌曲名、专辑名等MP3 tag信息,经过有些工具转换后,标签又不能被Windows识别。本文将简要分析其原因,并给出方便、有效的解决方案。

原因简析

MP3的歌曲名、艺术家、专辑名等信息都以一定的编码格式存储在MP3标签中。简单地说,乱码出现的原因就是播放器未能准确识别出MP3标签的中文编码格式。

具体的说,现在MP3文件的标签主要有几种标准:ID3v1、ID3v2(现在常见的又分为2.3和2.4)、APEv2。

ID3v1这几乎是MP3文件最早的标签标准(1996年提出)。它对标签各字段的长度有严格的限制

ID3v21998年的ID3v2带来了不少改进。如支持变长字段、UTF-16编码等等UTF-8编码,但这一标准还未得到很好的支持(如Vista里的WMP

而Linux中的播放软件通常使用统一的ID3库,这一库只探测Unicode编码。导致用GBK编码的歌名未能正常显示。

解决方法

可以从两个角度解决这个问题。一是转换已有MP3文件的标签编码,二是使用支持GBK编码的播放软件。

方案一:更改已有MP3文件标签的编码

这是治本的方法,但注意一定要用对工具,如果使用了错误的mid3iconv,将导致mp3的标签不被Windows识别!

mp3tagiconv

mp3tagiconv可以修改MP3文件的标签,使其同时能被Linux中的音乐播放软件和Windows Media Player正确识别,且使用方法简便,推荐使用。

使用方法很简单,在其项目网站( http://code.google.com/p/mp3tagiconv/ )上下载程序,解压后直接运行(适用于仅含中、英文的文档):

$ mp3tagiconv mp3文件路径

mp3tagiconv 需要 mutagen 的支持,确保之前已经安装。

Foobar

Foobar可以方便地做这一修改,它是Windows中的软件,也可以在Linux中使用wine运行。要注意安装Foobar时要安上那个批量修改标签的支持。用Foobar选中要修改的MP3文件(不能选到其它格式的,否则改标签的菜单项就出不来),先为音乐加好ID3v1、ID3v2标签,再去掉音乐的ID3v1标签,再加上音乐的ID3标签即可。

EasyTag

EasyTag一款Linux下的标签处理软件,设置EasyTag用GBK编码读入标签,用UTF-8编码写入ID3v2标签,用GBK编码写入ID3v1标签即可。

mutagen

6df4b5c476574a53b5d1592705b65ad1.png注意:

使用该方法处理过的MP3标签不能被Windows系统和Windows Media Player正确识别,不建议使用该方法!!

b4be691399d570b9b40b09f30a06c3d2.gif提示:

如果不慎已用此方法处理过MP3文件,可使用Foobar恢复。先使用Foobar的更新标签功能删除其ID3v1标签,再让Foobar写入ID3v1标签。

该方法由于有不良副作用,故略去。

方案二:选用支持GBK的MP3播放软件

目前,Linux中对中文支持较好的播放器主要有Audacious和Songbird。

Audacious是Beep Media Player的继承,是一款小巧的软件,存在于Debian、Ubuntu等软件仓库中。使用Audacious时,在页面上按右键,首选项->播放列表->使用自动编码器检测这些编码,选中“简体中文”即可。

Songbird是一个大型软件,甚至在播放器加入了浏览网页功能,它支持Linux、Windows、Mac OS X系统。无需任何设置就可以支持中文,不过它不在软件仓库中,需要单独下载。

还有一些软件,可以通过简单的修改使其支持GBK编码的中文。如Exaile,由于它用Python写成,所以修改其源码并不复杂。

参考资料

本文对您有帮助?分享给更多朋友!

反馈与讨论

发现文档不全面、有错误却没时间编辑文档?想分享自己的经验或见解?欢迎在此留言、讨论。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值