使DeadBeef播放器支持gbk编码

 May 27, 2011, 11:13 p.m.   10 comments    linux DeadBeef

平时比较爱收集无损音乐,其实只是一种嗜好吧,就我电脑那破声卡,无损听起来和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中文论坛上提供的做比较,发现需要修改一下几处:

修改完成后其实就可以直接编译安装了,但是我更喜欢先将打包然后再安装,这样卸载起来也方便很多。

这里提供一份修改过后的junklib.c文件


Ernest

Ernest May 27, 2011, 11:48 p.m. Reply

我基本只有英文的,另外好像在谷歌下载的mp3就没有这个问题了。

Chon

Chon May 27, 2011, 11:49 p.m. Reply

对,UTF-8的就没问题
我主要是用来对付BT上下载的无损


mellonwand

mellonwand May 31, 2011, 5:29 p.m. Reply

你果然很闲啊
求修改后的源代码,这东西在我这里一直编译不成功,不知为何

Chon

Chon May 31, 2011, 6:04 p.m. Reply

把源码传了上来~~
我是用Arch abs里的PKGBUILD文件进行编译打包的,不过abs里不是最新的,需要自己改参数


Ernest

Ernest June 9, 2011, 12:18 a.m. Reply

用这个方法可以听孙燕姿的无损了,太好了。

Chon

Chon June 9, 2011, 12:19 a.m. Reply

原来怎么没发现你这么迷孙燕姿...


翅膀~

翅膀~ July 16, 2011, 10:22 p.m. Reply

把这个搞上AUR吧~

Chon

Chon July 16, 2011, 10:23 p.m. Reply

AUR里原来就有,只是好久没更新了


kgame

kgame Aug. 2, 2011, 2:24 a.m. Reply

我論還是把cue轉成UTF-8比較好
簡單的Linux指令就可以辦到
像是日文shift-jis轉UTF-8
iconv -f shift-jis -t utf-8 file1.cue > file2.cue

Kars

Kars Jan. 20, 2012, 6:11 p.m. Reply

我也赞同这种方式、、而且可以把中文、日文等等的语言全都转成 UTF-8,像博主的办法只能解决中文问题、、并不是通用的解决方法、