改造taglib彻底解决amarok等kde下音乐播放程序播放mp3时的中文乱码问题!

一直使用linux系统,但是作为一个中文用户,mp3乱码问题始终困扰着我,在amarok早期版本中其是支持非标准的id3v1/2的编码,但可惜的是其在新近的后续版本中去掉了这个功能,如果想要支持中文有以下几个解决方法:

1, 对于id3v1的mp3文件  如果不改动底层支持是无论如何都不会支持中文的, 因为该标准制定时根本就不支持中文语系的编码

2,   使用工具逐一修改mp3的id3v2的信息使其符合标准, 也就是说每下载一首mp3都要去修改,因为现在桌面是windows的天下,非标准的mp3格式还是占据了主流



今天花了半天时间研究了下taglib库的mpeg/id3v1/id3v2的实现,顺便对其进行深度改造使其支持非标准的mp3 id3v1/id3v2编码,增加了大约200行代码左右,思路如下:

1, 首先尝试使用TAGLIB_COMPAT_ENCODING环境变量定义的编码

2,    如果没有设置以上的环境变量尝试使用当前系统默认的字符编码

3,    如果转码失败则尝试使用GBK编码

4,   如果全部失败则使用taglib原始编码


理论上改动不会对原始的taglib流程及编码造成任何影响,已经在archlinux上的amarok测试通过, 项目地址是:

http://code.google.com/p/taglib-mod/


你可以在项目主页上下载修改过的taglib原始代码, 也可以选择下载针对taglibv1.7的patch补丁,也可以下载针对archlinux的AUR包

你可能感兴趣的:(linux)