Rhythmbox中文乱码解决办法

来源:互联网 发布:日本历年进出口数据 编辑:程序博客网 时间:2024/04/29 22:41

转自:http://hi.baidu.com/morgensonne/item/3470aef58747abde6325d2d9


今天在网络上找到了一个比较好的解决Rhythmbox中文乱码的问题的方法 

进入你的音乐文件夹执行如下代码: 
mid3iconv -e GBK *.mp3 
如果没有提示多试几次,
有可能系统会提示:

python-mutagen没有安装。 
sudo apt-get install python-mutagen 安装。

输入如上的命令,回车。等安装好程序之后,再回到你的音乐文件夹,
输入命令: mid3iconv -e GBK *.mp3 回车。
然后重新打开rhythmbox,OK! 所有mp3都能正常显示了。

mid3iconv 命令主要是将原来mp3音乐文件的ID3信息转换成了Unicode并用ID3v2的格式存回文件中。

----------------------------------------------------------------------------------------------

另外一个是用 Python 写的 “Mutagen”,目前最新版本 1.11,Ubuntu 7.04 源里也带有 1.10 版本的 Mutagen,可以用这个命令来安装:
sudo apt-get install python-mutagen

ps:安装 Quod Libet 和 Listen 都必须这个

使用方法:
mid3iconv -e gbk *.mp3

如果想转换当前目录下的所有 mp3 (包括子目录):
find . -iname "*.mp3" -execdir mid3iconv -e gbk {} \;

* 相信现在大陆绝大多数能找到的 mp3 标签都是以 GBK/GB18030 编码,使用 -e gbk 来处理就够了,当然你也可以使用 -e gb18030 来处理。
* -e gbk 参数是代表把 GBK 编码的标签转换为 Unicode 编码,本身是 Unicode 编码的就不转换。如果需要转换其他编码的文件可以自行修改,如改为 Big5。
* 经测试,转换后为 2.4 版的 ID3v2,编码格式为 uft-16
* 不过它会同时用 Unicode 编码填满 D3v1, ID3v2, APEv2 标签,但是 ID3v1 又不支持中文的 Unicode 编码,所以转换后的 ID3v1 标签全是问号。所以最好加上 –remove-v1 参数,转换后删除 ID3v1 标签。
mid3iconv -e gbk --remove-v1 *.mp3

-----------------------------------------------------------------------------------

Rhythmbox Music Player是ubuntu自带的一款音乐播放器,功能还算比较强大,使用也简单。唯一的缺点就是中文显示乱码,原因是由于编码不同所致。

在这里介绍一个解决方法,修改变量。

在终端输入:

1vi~/.profile

在最后加入下面内容:

12exportGST_ID3_TAG_ENCODING=GBK:UTF-8:GB18030exportGST_ID3V2_TAG_ENCODING=GBK:UTF-8:GB18030

保存退出。

1source~.profile

重启Rhythmbox把歌曲重新导入即可显示正确。此方法在Ubuntu 10.04可行,其他版本应该问题也不大。

----------------------------------------------------------

相信很多朋友在Linux里播放mp3的时候,不论使用何种mp3播放器,或多或少都会遇到mp3标签乱码的问题。我一般在遇到mp3标签显示乱码的时候 都是使用Ex Falso(Quod Libet自带的一个mp3标签编辑器)来编辑一下标签,使我的播放器Quod Libet能够正常识别mp3标签。遇到转换歌曲少的时候,这样做没有什么问题,但是很多刚从Windows转到Linux上来的朋友就头大了,很多在 Windows下显示正常的mp3标签在Linux下全都乱套了。

我们先来看看一些关于mp3的标签和编码的概念再来解决这个问题,大家就会比较清晰一些了。

mp3的标签类型和编码,现在主要存在这几种标准,ID3v1、ID3v2 2.3、ID3v2 2.4、APEv2。它们分别支持的编码为
ID3v1:只支持ISO--8859-1
ID3v2 2.3:ISO--8859-1、UTF-16
ID3v2 2.4:ISO--8859-1、UTF-16、UTF-8
APEv2:UTF-8
我们可以从上面的列表看出,mp3的标签类型和编码是多种多样,没有任何的规范可言的。ID3v1只支持ISO-8859-1这一种编码,它是不支持中文 的,所以一般来说只有ID3v1标签的mp3在Linux上基本上也都是乱码的命,而ID3v2 2.3支持的格式增加了UTF-16,直到ID3v2 2.4版才开始支持UTF-8,但是 ID3v2的两个版本标准并没有统一标签内容的编码。这里值得一提的是APEv2,它拥有最好的扩展性,它把编码格式统一为UTF-8,这样一来只要支持 APEv2读取的播放器播放带有APEv2标签的mp3就不会存在乱码问题。可惜的是现在在国内的网站上下载的mp3基本上都没有APEv2标签,而且 Linux下也没有几个播放器支持APEv2标签的读取。(目前Gnome里的Rhythmbox是支持APEv2标签读取的,包括Quod Libet都不可以。)

一首mp3的标签是可以包含多种类型的,当一首mp3同时含有ID3v1、ID3v2 2.3、ID3v2 2.4、APEv2这4种类型中两种以上的时候,播放器对mp3标签的读取顺序一般是由上往下的,APEv2(前提是播放器支持此编码的读 取)---ID3v2---ID3v1。所以有时候会出现同一文件Rhythmbox显示标签正常(读取APEv2标签),其他播放器不正常的情况(读取 了ID3的标签)。

接着我们说说在Linux系统里,为什么所有的mp3播放器都会有乱码的问题,这是因为这些mp3播放器都是依赖系统内的libid3tag库完全按照 ID3的标准来读取标签内容的。 它不论mp3是采取何种的标准的标签(ID3v1、ID3v2、APEv2),只要mp3的标签的内容是Unicode编码存储的,那么显示肯定是正常的 (ID3v1的ISO-8859-1严格说是不支持中文,但是并不是代表它不能存储中文)。如果遇到是以gbk、gb18030、big5等编码的中文内 容时,它还是会把它当成ISO-8859-1来读取,乱码就成了必然。

说了这么多,现在问题就变得简单了,似乎我们只需要把mp3标签里面用gbk、gb18030、big5等编码存储的中文内容修改为Unicode编码,那么基本上所有Linux下的播放器都能正常识别mp3标签了。

关于mp3编码的转换,这里介绍一个工具----Mutagen,假如你安装了Quod Libet,那么这个包已经安装上去了。如果没有,执行下列命令就可以了。
sudo apt-get install python-mutagen

工具的使用方法
mid3iconv -e gbk *.mp3 #转换当前目录的mp3文件
find . -iname "*.mp3" -execdir mid3iconv -e gbk {} \;   #转换当前目录下所有mp3文件(包括子目录)

因为现在在网上下载的mp3绝大多数采用的都是gbk/gb18030编码,-e gbk 参数是代表把gbk编码的标签转换为Unicode编码,假如mp3标签本身是Unicode编码的就不转换。如果需要转换其他编码的文件可以自行修改 gbk参数,比如改为gb18030、big5。转换后为的mp3标签类型为ID3v2 2.4,编码格式为UTF-16。 

到了这一步之后,在Linux下使用所有播放器估计都没有什么问题了。

下面我们回过头来看看,追溯一下根源,为什么这些mp3原来在Windows下用Media Player怎么都是显示正常的呢?难道是Linux不如Windows吗?其实这个道理很简单,Firefox同样也打不开很多IE轻松就能打开的页 面,能说明Firefox不如IE吗?知情的人一看就明白了。Windows为了它所谓的兼容性,完全无视规范,自定规则,貌似它的软件兼容性很好,其实 到头来,毁的还是用户,从众多的不符合W3C规范的网页和现在铺天盖地的mp3标签为gbk/gb18030编码就可见一斑(反正我现在从网上下载的 mp3在Linux下就没有看到几个能正常显示的)。

可以告诉大家的是,利用上面的方法转换编码之后,这些mp3在Windows的文件属性菜单和Media Player里都无法正常显示标签,将会全部变为"?"。因为mid3iconv命令在转换编码时默认它会用Unicode编码填满D3v1, ID3v2, APEv2标签(前提是文件本来就含有这些类型的标签),但是 ID3v1 又不支持中文的 Unicode 编码。而Media Player似乎只支持ID3v1的读取,当然你使用其他的支持ID3v2、APEv2类型读取的软件是没有问题的。

这里给大家推荐一个Windows下的mp3播放器---Foobar2000,在以前Windows的生涯中,我一直都是使用的这个播放 器,foobar2000支持全系列标签的读取,更值得称赞的是它默认使用ID3v2 2.4类型UTF-8编码的写入,完全解决了编码方面的问题。 

给出一个个人提供的最终解决方案。
1.系统环境完全就是Linux。
直接使用下面的这条命令,转换所有mp3文件,完全无视Windows下的使用体验。
mid3iconv -e gbk *.mp3 

当然了,如果你为了避免自己的mp3文件共享给Windows或者mp3的用户时,出现煞风景的"?",你可以添加一个--remove-v1这样一个参数来直接删除ID3v1标签,避免了文件属性和Media Player里出现"?"。
mid3iconv -e gbk *.mp3 --remove-v1


2.系统环境为Windows+Linux的双系统
推荐使用foobar2000播放器,对文件进行mp3标签的编辑,可以在foobar2000里选中所有mp3文件,进行文件标签重 写,foobar2000会把所有标签进行重写,使标签采用ID3v2 2.4类型UTF-8编码的写入,完全解决Windows和Linux下mp3文件的编码问题。这也是比较完美的解决办法。

foobar支持三种标签编码方式 :ID3V1  ID3V2   APEv2将mp3文件用这三种编码都进行转化的话  window
和linux都不会出现乱码或者 ?

foobar编辑标签的功能很强大  标签名字两边加%   比如流派  %genre%  就可以读出来值
不妨一试


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 交通事故对方伤员堵大门搂腿怎么办 电脑开机桌面文件都没了怎么办 qq飞车手游队长换了微信群怎么办 qq飞车手游登录授权失败怎么办 安装时提示安装包发现错误怎么办 苹果6p升级系统验证失败怎么办 w10开不了机无限重启怎么办 微信朋友圈里的表情图打不开怎么办 金立手机微信启动录音被拒绝怎么办 微信帐号解封后漂流瓶不能用怎么办 微信怎么在电脑上登不上去怎么办 玩旧版60级魔兽经常花屏怎么办? 我的世界手机版物品栏不见了怎么办 苹果手机掉进水里出现花屏该怎么办 球球大作战还没进去停止运行怎么办 ps3 e3硬破芯片坏了怎么办 电话打开后页面上没有东西怎么办 WPS在电脑安装后卸载不了怎么办 ps总要以管理员的身份打开怎么办 3d关的慢保存慢怎么办 无法与服务器建立可靠的连接怎么办 被抵押的房子开发商不解押怎么办 手机系统语言是英文没有中文怎么办 w7主机网插口灯不亮了没网怎么办 电脑用了5年变得很卡了怎么办 苹果6s系统占12g怎么办 百度网盘下载的压缩包打不开怎么办 三星手机微信安装包解析错误怎么办 下身流出来的东西有异味很重怎么办 鞋脚底总有一股酸臭的味道怎么办 腋窝总是有股酸臭的味道应该怎么办 房间里总是有灰尘的味道怎么办 香水喷多了衣服味道太呛怎么办 香水喷在衣服上变黄了怎么办 84喷在白衣服上变红怎么办 夏季高温多肉山地玫瑰砍头了怎么办 海水缸爆藻有些石头不出绿藻怎么办 不小心把b原来的壁纸删了怎么办 注册简历时没有固定电话必填怎么办 申诉找回微信账号密码验证码怎么办 激活淘宝时显示注册账号过多怎么办