平时比较爱收集无损音乐,其实只是一种嗜好吧,就我电脑那破声卡,无损听起来和320kbps的mp3没啥区别的。
好在有校内的PT站,各种无损音乐下载起来非常方便也非常迅速。只是,不管是ape还是flac的无损音频文件,往往一张专辑就是一个整轨的文件,播放的时候需要另外的cue文件进行分轨。
以前用KDE桌面时我喜欢用Amarok播放器,现在用GNOME桌面比较喜欢用DeadBeef播放器,都是支持cue文件分轨的。跟Windows上foobar2000之类的播放器通过cue文件加载ape/flac文件的方式不同,Amarok和DeadBeef的做法是先加载ape/flac文件,然后再加载同目录下的cue文件。
不管怎样,这对于中文用户来说就产生了一个不可回避的问题:乱码。
根本原因在于,Linux上采用的中文编码大多数是UTF-8,而Windows上采用的中文编码是gbk,这就导致Windows上生成的文本文件(cue文件也是文本文件)如果采用了默认的gbk编码,在Linux上使用时就会产生乱码。
如果下载的cue文件采用了gbk编码,在DeadBeef播放器里加载时就会乱码。
好在DeadBeef是一个完全开源的软件,这也就意味着其源代码是完全可以获得并且修改的。如果修改源码使其支持gbk编码,岂不是就可以解决乱码的问题了?
答案是肯定的。
在Google上搜索了一下,发现Ubuntu中文论坛上已经有人给出过决方案(看来我不是最早想到的...唔)
但是,DeadBeef版本更新得很快...原来的代码已经没法直接使用了,还是得自己动手修改。
首先,从DeadBeef项目主页下载源码,最新版本是0.5.1 。
解压源码之后,找到junklib.c文件,和Ubuntu中文论坛上提供的做比较,发现需要修改一下几处:
- 第687行,
enc = "cp1251"
;修改为enc = "gbk"
; - 第769行,
enc = "cp1251"
; 修改为enc = "gbk"
; - 第3388行,
return "cp1251"
;修改为return "gbk"
; - 第3390行,
return "cp1252"
;修改为return "iso8859-1"
;
修改完成后其实就可以直接编译安装了,但是我更喜欢先将打包然后再安装,这样卸载起来也方便很多。
这里提供一份修改过后的junklib.c文件
Leave a Comment