平时比较爱收集无损音乐,其实只是一种嗜好吧,就我电脑那破声卡,无损听起来和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文件

10 comments
我基本只有英文的,另外好像在谷歌下载的mp3就没有这个问题了。
对,UTF-8的就没问题
我主要是用来对付BT上下载的无损
你果然很闲啊
求修改后的源代码,这东西在我这里一直编译不成功,不知为何
把源码传了上来~~
我是用Arch abs里的PKGBUILD文件进行编译打包的,不过abs里不是最新的,需要自己改参数
用这个方法可以听孙燕姿的无损了,太好了。
原来怎么没发现你这么迷孙燕姿...
把这个搞上AUR吧~
AUR里原来就有,只是好久没更新了
我論還是把cue轉成UTF-8比較好
簡單的Linux指令就可以辦到
像是日文shift-jis轉UTF-8
iconv -f shift-jis -t utf-8 file1.cue > file2.cue
我也赞同这种方式、、而且可以把中文、日文等等的语言全都转成 UTF-8,像博主的办法只能解决中文问题、、并不是通用的解决方法、
Leave a Comment
In Reply to (cancel)