转自: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吗?事实上这个道理非常easy,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%  就能够读出来值

最好还是一试

Rhythmbox中文乱码解决的方法的更多相关文章

  1. PHP创建文件命名中文乱码解决的方法

    PHP创建文件命名中文乱码解决的方法 <pre>iconv('utf-8', 'gbk', $dir); </pre> 因为系统环境是gbk 所以里面的字符也要gbk 编码一致 ...

  2. Rhythmbox中文乱码解决办法

    今天在网络上找到了一个比较好的解决Rhythmbox中文乱码的问题的方法 进入你的音乐文件夹执行如下代码: mid3iconv -e GBK *.mp3 如果没有提示多试几次,有可能系统会提示: py ...

  3. 使用java连接MySql,中文乱码解决的方法

    排查MySql中文乱码的问题 1.在cmd中启动MySql. 打开命令提示符cmd,输入"mysql -uusername -ppassword",回车,就可以连接到数据库. 如输 ...

  4. Rhythmbox中文乱码问题的解决

    Rhythmbox中文乱码问题的解决 Rhythmbox是Ubuntu自带的一款很优秀的音乐播放器,但是在处理中文时却不太友好,导入歌曲时中文会变成乱码 这个问题也是很好解决的. ** 1.Ctrl+ ...

  5. php mysql 中文乱码解决方法

    本文章向码农们介绍php mysql 中文乱码解决方法,对码农们非常实用,需要的码农可以参考一下. 从MySQL 4.1开始引入多语言的支持,但是用PHP插入的中文会出现乱码.无论用什么编码也不行 解 ...

  6. jquery的ajax()函数传值中文乱码解决方法介绍

    jquery的ajax()函数传值中文乱码解决方法介绍,需要的朋友可以参考下 代码如下: $.ajax({ dataType : ‘json', type : ‘POST', url : ‘http: ...

  7. [转]mysql导入导出数据中文乱码解决方法小结

    本文章总结了mysql导入导出数据中文乱码解决方法,出现中文乱码一般情况是导入导入时编码的设置问题,我们只要把编码调整一致即可解决此方法,下面是搜索到的一些方法总结,方便需要的朋友. linux系统中 ...

  8. Zxing中文乱码解决方法

    Zxing中文乱码解决方法总结 尝试过非常多方法  最后发现此方法解决的乱码最多....... 在百度搜索二维码图片 经过前2页的測试  除开一张图之外  其余都能扫描出结果 假设大家有更好的解决方法 ...

  9. unity3d 中文乱码解决方法——cs代码文件格式批量转化UTF8

    在Unity3d中经常会碰到中文乱码的问题,比如代码中的[AddComponentMenu("GameDef/AI/战机AI")],注释,中文文本等等 其原因在于,unity本身是 ...

随机推荐

  1. core_cm3文件函数一览

    core_cm3是ARM公司推出来的统一规定,这是对下游芯片厂商的统一规定,因此可以再Cortex-M3(CM3)之间进行移植.此文件中定义了一些对特殊功能寄存器的C语言形式的操作,本质上是内敛汇编和 ...

  2. spring+hibernate整合:报错org.hibernate.HibernateException: No Session found for current thread

    spring+hibernate整合:报错信息如下 org.hibernate.HibernateException: No Session found for current thread at o ...

  3. Cortex-A9 PWM Timer

    PWM定时器        4412时钟为我们提供了PWM定时器,在4412中共有5个32位的定时器,这些定时器可发送中断信号给ARM子系统.另外,定时器0.1.2.3包含了脉冲宽度调制(PWM),并 ...

  4. String源码学习

    String源码学习 零散的收获 数组的元素类型可以通过getComponentType来获取到 子类型的数组可以赋值给父类型的数组,.但是并不存在继承关系.数组的父类是Object. 通过声明如下代 ...

  5. Eclipse UML插件AmaterasUML的配置及使用

    AmaterasUML是个人觉得最好用的Eclipse UML插件,可以通过拖拽Java源文件,轻松生成类图结构,同时支持活动图.时序图和用例图.它的官方下载地址是:http://sourceforg ...

  6. Struts2上传文件

    jsp: <form action="file_upload.action" method="post" enctype="multipart/ ...

  7. SQL 分组获取最近(大)一条记录

    SELECT MAX( table.Column),.... FROM table.Name WHERE ....... GROUP BY 分组规则

  8. compass安装

    修改ruby软件包的sources 国外服务器不给力,经常链接失败,换成国内淘宝的:https://ruby.taobao.org/ 先移除本有的sources gem sources --remov ...

  9. javascript紧接上一张for循环的问题,我自己的理解

    这类问题,通常都是在for循环里,根据i的变化作为dom的下标来作当前dom的点击事件, 预期是,每个点击事件都对应相应的i下标,但是问题是,每次点击的都是最后一次节点的dom. 原因就是其实我们作点 ...

  10. Arc engine - Geodatabase.

    Geodatabase以层次结构的数据对象来组织地理数据. 这些数据对象存储在要素类(Feature Classes).对象类(0bject classes)和数据集(Feature datasets ...