|
好久没有来linuxsir了,想念大家了,废话少说,上正事^_^
一直使用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包 |
|