Holmesian Blog

解决Linux音乐列表乱码问题

在Windows和Linux共存的电脑上容易遇到Linux下音乐播放器列表乱码问题,原因是mp3文件的标签和标签编码不兼容。知道导致乱码的原因之后要解决编码导致的播放器列表乱码可以通过两条思路:转换mp3文件中标签的编码为统一的一种兼容Windows和Linux的编码UTF8;修改Linux下的用户环境变量让相应的音乐播放器读取mp3文件时使用和mp3文件标签相同的编码GBK。由于修改mp3文件可能回带来一些不可预期的问题,所以推荐修改Linux本身的设置来解决乱码问题。

关于mp3标签类型和编码

大家应该知道目前主要存在这几种标准,ID3v1, ID3v2 2.3, ID3v2 2.4, APEv2,ID3v1只支持 ISO-8859-1 编码 (编码集参考), 严格的说它是不支持中文的 (并不代表它不能储存中文信息,目前中文mp3的ID3v1标签都使用这个字段来储存 GBK/GB18030 编码的中文信息),而第二版 (ID3v2) 支持的格式增加了utf-16,直到 2.4 版才开始支持uft-8,但 ID3v2 标准没有统一标签内容的编码,例如 2.4 版的 ID3v2 你可以使用 ISO-8859-1 编码,也可以使用utf-16/uft-8 这种 Unicode 编码格式。做得最好的是 APEv2,它不但有很好的扩展性,而且还把编码格式统一为utf-8,这样一来只要支持 APEv2 读取的播放器播放带有 APEv2 标签的mp3 就不会存在乱码问题。


处理方法

一、修改mp3文件标签

借助现成的工具python-mutagen

    holmesian@holmesian-laptop:~$ sudo apt-get install python-mutagen
    正在读取软件包列表... 完成
    正在分析软件包的依赖关系树       
    正在读取状态信息... 完成       
    下列【新】软件包将被安装:
      python-mutagen
    升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 3 个软件包未被升级。
    需要下载 85.5kB 的软件包。
    解压缩后会消耗掉 463kB 的额外空间。
    获取:1 http://mirrors.163.com/ubuntu/ lucid/main python-mutagen 1.15-2build1 [85.5kB]
    下载 85.5kB,耗时 10秒 (7,862B/s)                                                                                           
    选中了曾被取消选择的软件包 python-mutagen。
    (正在读取数据库 ... 系统当前总共安装有 153569 个文件和目录。)
    正在解压缩 python-mutagen (从 .../python-mutagen_1.15-2build1_all.deb) ...
    正在处理用于 man-db 的触发器...
    正在设置 python-mutagen (1.15-2build1) ...

接着转到MP3目录,执行命令进行转换mp3文件标签:mid3iconv -e GBK *.mp3
转换子目录下的文件可以用/,mid3iconv -e GBK /.mp3

    holmesian@holmesian-laptop:/media/64E83E37E83E0836/music$ mid3iconv -e GBK */*.mp3
    Updating Jay/02.画沙[CD版].mp3
    Updating Jay/04 晴天.mp3
    Updating Jay/06 倒带.mp3
    Updating Jay/07 简单爱.mp3
    Updating Jay/10 星晴+回到过去+爱我别走.mp3
    Updating Jay/11 东风破.mp3
    .....

最后,重新导入一次rhythmbox就OK了。

二、修改Linux用户变量

由于修改mp3文件可能回带来一些不可预期的问题,所以推荐修改Linux本身的设置来解决乱码问题。以Rhythmbox为例,简单的可以在启动命令中修改

    图标上,右键 -> 属性 -> 命令 改为 env GST_ID3_TAG_ENCODING=GBK rhythmbox %U
    (原为rhythmbox %U)

启动之后重新导入音乐文件即可。

或者是修改用户变量

    vim .profile

在用户的环境变量中添加如下内容

    export GST_ID3_TAG_ENCODING=GBK:UTF-8:GB18030
    export GST_ID3V2_TAG_ENCODING=GBK:UTF-8:GB18030

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »