“食人族酋长”通过精心收集,向本站投稿了7篇Linux系统下Mp3标签乱码问题的分析和解决,下面是小编精心整理后的Linux系统下Mp3标签乱码问题的分析和解决,希望能够帮助到大家。
- 目录
篇1:Linux系统下Mp3标签乱码问题的分析和解决
相信很多朋友在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文件的编码问题。这也是比较完美的解决办法。
篇2:win7系统下汉字乱码怎么解决
步骤一:打开win7系统的运行窗口,然后输入regedit的指令回车打开win7系统的注册表编辑器。
步骤二:在win7系统的注册表编辑器里面,我们按照这个顺序“HKEY_LOCAL_MACHINE System CurrentControlSet Control FontAssoc”打开所需要编辑的Aossiated CharSet项,然后在右边窗口的空白处点击右键新建一个名为ANSI(00)的“字符串值”,然后在编辑窗口里面输入Yes,
步骤三:然后依次在注册表中输入键值名GB2312(86),WEM(FF),SYMBOL(02),数值依次编辑为Yes、Yes、on。
篇3:完美解决Windows7系统乱码问题
综合了网上各种观点,加上亲身实验,在本人的机子中完美解决乱码问题,
注意这几个方面:
一、就是控制面板中,系统时区、语言等的设定。这些大家都会设了,不过设了以后乱码还是有的,但这步骤还是必须的。
二、坛子中流传最广的解决方法:
打开注册表键 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFontAssocAssociated Charset
确定下面这两项的值是 YES.如果没有则自己创建。
“ANSI(00)”=“YES”
“OEM(FF)”=“YES”
在一些版本中,此法可解决一些乱码问题,如迅雷、QQ旋风等的大部份乱码可以解决,
但是仍有部分软件存在乱码,比如光影魔术手就几乎是面目全非了,还有佳能相机的相片导入程序,也是全部的问号。何况在较新版本中,系统本身都已经把这两项设置成YES了,但还是有乱码。要解决这些,还得做第三步ghost xp sp3。
三、昨日偶然发现的
打开注册表键 HKEY_CURRENT_USERControl PanelInternational,将右侧:“Locale”=“00000409″ 改成 ”Locale“=”00000804″
改了要重启。
只要做了这三个步骤,你的Win7基本可以摆脱乱码的困扰,中英文都适用windows xp系统下载!
篇4:如何解决office乱码问题
一、消灭Word中的乱码
由于Windows 2000/XP都是以Unicode编码作为内码,因此不同的文字在这些操作系统下也不会出现乱码,作为目前国内占有率最高的文档处理工具,特别是文档中有图文混排的内容时,出现乱码的几率相当高,首先你必须确定出现乱码字符的文档格式能够被Word所支持,这可以从“文件格式”下拉列表中查看,然后考虑采取对应的补救措施:
1.查看文件格式
如果你试图用Word打开不支持的文件格式,那么当然会出现乱码,例如PDF格式的文档应该是使用Adobe Reader打开,比较常见的还有WPS文档,虽然WPS对Word文档的兼容性做得比较出色,但Word并没有考虑对WPS的兼容性,如果你使用的是高版本的Microsoft Word更是如此,
如果Word支持某种格式的文档,那么可以在Word的“打开”对话框中直接打开,否则即使选择“所有文件”显示出相应的文档,我们也会看到图2所示的对话框,即使在这里强行选择打开文档,也会出现根本无法识别的乱码,实际上这是不同格式之间的文档在转换过程中出现的乱码。
对策:在Word中出现乱码,最大的可能是不同格式的文档转换,这是根本的原因,因此请尽可能使用专用的工具打开相应的文档。
2.文件损坏与否
导致文件损坏的原因有很多,例如意外断电、非法关机、病毒破坏等,此时同样会出现乱码字符,如果事先没有进行备份,那么这是最令人痛苦的。
对策:如果文档的乱码字符并不太多,那么将这些字符删除后重新保存即可,当然删除之前请首先另存到其他的路径下进行备份,或者尝试将文档在其他的计算机上打开,当然这种方法在大多数情况下都是无效的。也可以尝试将*.doc格式的文档重新保存为其他格式,然后再次转换回来:*.doc→*.rtf→*.doc
如果这一招仍然无法解决问题,可以尝试将文件转换为*.txt,然后再转换为*.doc,当然在转换过程中文档中的图像信息会相应丢失,不过这也是在所难免的。
还有一种方法,就是在打开文档时选择“从任意文件中恢复文本”,当然这种方法只能说找回多少就是多少,权且将死马当成活马医吧。
3.是否软件冲突
如果你安装过微软的AppLocale,这是官方发布的一款内码转换工具,很多玩繁体中文游戏的朋友都会安装,但由于某些不可知的原因会导致产生乱码。
对策:请尝试卸载AppLocale,或者使用WordFix进行修复,当然并非100%有效,下载地址是down1.tech.sina.com.cn/download/download/10390.shtml,如果使用上面的方法后仍然没有解决乱码的问题,那么最好的解决办法是彻底卸载Microsoft Office后重新安装。
4.键盘布局的设置
也许你不会注意到键盘布局的问题,但事实上如果你由于某些原因,在控制面板中将键盘布局设置为非中文的键盘布局,那么在将网页中的文字直接复制到Word中并不会出现问题,但如果是直接保存为文本文件,然后再在Word中打开,就非常容易出现乱码字符,
对策:进入控制面板,重新设置为“中文-中国”的键盘布局,并且将其设置为默认值。
二、消灭Outlook Express中的乱码
虽然国内用户使用Foxmail的比较多,但对于企业用户而言,功能强大的Outlook Express或Outlook无疑是提高工作效率的重要武器之一。如果在收发邮件的往来过程中,时不时的冒出几封乱码邮件,那可就惨了,特别是重要的工作邮件,后果更是不堪设想。
1.编码设置的问题
默认设置下,Outlook Express对于待发邮件默认使用简体中文(GB2312)编码,这样在向港澳台地区和国外发送邮件时,由于接收方的编码设置方面的原因,或者所使用的操作系统不支持简体中文,那么在阅读邮件时就容易出现乱码。
对策:选中乱码邮件,从“查看”菜单中选择“编码→简体中文(GB2312)”,一般情况下都可以解决问题,或者尝试将乱码邮件转发到另一个邮箱,也许在某些场合下能够解决问题。
2.服务器的原因
很多架设在国外的邮件服务器,并不支持ASCII编码,对于中文双字节或二进制格式的邮件,会将每个字符的第8位过滤掉,这样会造成邮件的头信息失真或损坏。
对策:从“工具”菜单下打开“选项→阅读”窗口,如图3所示,单击“字体”按钮,选择“简体中文(GB2312)”编码,注意将其设置为默认值,接下来单击“国际设置”按钮,勾选“为接收的所有邮件使用默认编码”,确认后退出。
3.病毒的破坏
很多时候,其实你所看到的乱码邮件大多数是缘自病毒的破坏,或者是本机感染了病毒,或者是发件人那边的机器感染病毒后自动发送的垃圾邮件。
对策:将乱码邮件保存为*.eml格式的文件,然后用记事本打开,在Outlook Express中选择一个正常邮件,从“详细信息”中复制下面的代码,粘贴到乱码邮件的相应位置,保存后就可以了。
Content-Type: text/html;
charset=“gb2312”
Content-Transfer-Encoding: quoted-printable
如果上面的方法还不行,那么你恐怕只能麻烦对方重新发送一份邮件过来了,55555…
当然,在使用Microsoft Office的过程中,并非仅仅只有Word和Outlook Express才会产生乱码,其他的组件也会间或冒出一些乱码,例如Excel中经常遇到的“#乱码”(见图3),其实这只是一个设置的问题,并非文件损坏,而是由于单元格中的数据超过了18位,我们只需将单元格格式由“常规”或“文本”更改为“数值”并拉长列宽就可以了。
篇5:如何解决IE对话框乱码问题
问:
在论坛发帖时弹出IE对话框出现乱码,只出现在特定网站,以前没有出现过 ,如何解决IE话框乱码问题?
答:
这般是网站自己的原因, 没有指定弹出对话框的编码, 所以出现对话框乱码.
可以试下在ie上点击页面,然后选择转码,把语言设置成中文自动再看看可否解决问题
篇6:解决IIS下UTF8文件报错乱码问题
解决IIS下UTF-8文件报错乱码的问题
原因:
你的网站是utf-8编码,但iis的错误信息输出默认使用的是gb2312编码,导致iis出现运行时错误的时候显示的页面是乱码。
解决办法:
[办法1]
自己处理错误,不让iis来处理。
在所有可能出错的地方,都用类似下面的方式来捕捉。
On Error Resume Next
Err.Raise 6 '这行是可能出错的代码
If Err Then
Response.Write Err.Description
Response.End
End If
On Error Goto 0
[办法2]
改变iis错误信息输出默认编码,
1)将c:winnthelpiishelpcommon500-100.asp拷贝到网站(根)目录下
2)将这个文件修改为utf-8编码。
2.1)头部加上 @codepage=65001
2.2)option eXPlicit后面加上一行response.charset=“utf-8”
2.3)将Session.Codepage = 936改为Session.Codepage = 65001
2.4)将第156行
If objASPError.ASPDescription >“” Then
后面的回车去掉(这个地方微软写错了)
2.5)配置iis,设置“自定义错误页面”,将500;100的类型设为URL,同时URL设为 /500-100.asp
2.6)将500-100.asp另存为utf-8编码
篇7:Win 7乱码问题终极解决
近期,居住香港的姐姐也安装了Windows 7,不过,令她烦恼的是使用一些简体中文的软件出现了乱码,而这些软件都无法找到繁体版本,比如:迅雷,即使勉强安装好也无法轻松使用。难道香港用户就无法使用这些简体软件了吗?其实,Windows 7自身已经提供了完善的解决方案了。
一、Windows 7乱码问题来龙去脉
旅居香港的姐姐安装的是我提供的简体中文版本的Windows 7旗舰版,按理是可以顺利兼容简体软件的,然而问题就出在姐姐对默认的安装设置进行了修改。因为姐姐经常使用繁体软件,她将系统的“区域和语言”的“格式”、“位置”、“默认输入语言”、“非Unicode程序的语言”都设置成了更加顺手的香港繁体。
我们知道Unicode也可称为统一码,为每种语言的每个字符设置了统一且唯一的二进制编码,以满足跨语言、跨平台进行文本转换处理的要求,然而,还是有不少程序并不支持该编码,这时就有必要设置非Unicode程序使用的语言编码了。像迅雷这样的软件就支持简体中文编码,而不支持Unicode,当设置了香港繁体的非Unicode就会出现乱码,同理,将非Unicode设置为简体后,很多不支持Unicode的繁体软件也会出现乱码。这个乱码问题难道是两难的吗?其实,我们使用Windows 7的语言包补丁安装功能就可以顺利解决。
二、巧妙解决Windows 7乱码
1.安装合适的语言包
首先,要能安装多种语言包的Windows 7只能是旗舰版或者企业版,接着我们就来解决这个问题吧,
我们点击“开始-Windows Update”打开自动更新窗口。
在窗口中点击“34个可选更新”链接,在可以下载安装的语言包列表中选择“繁体中文语言包”,确定即可。
回到刚才的窗口点击“安装更新”按钮开始下载安装。
安装完语言包补丁需要重启。重启的过程需要配置补丁。
2.合理设置区域和语言
安装完繁体中文语言后,我们还需要进行合理的配置。进入控制面板的“时钟、语言和区域”选项,选择“管理”选项,将“非Unicode程序中所使用的当前语言”设置为“中文简体”。
该设置需要重启计算机。接着我们安装所有的简体软件,比如:迅雷、QQ等,这时这些软件的乱码已经消失了。
而且系统界面已经变成了繁体中文的了。
由于以后日常使用的软件基本是繁体的,我们再次通过“时钟、语言和区域”选项将“非Unicode程序中所使用的当前语言”设置为“香港繁体”。再次重启系统后即可设置完成了。这时就可以正常安装使用繁体中文软件,以后再次安装简体中文软件需重新设置“非Unicode程序中所使用的当前语言”为简体中文。
类似的问题也常会出现在Windows其他版本,比如:Windows XP,解决方法是接近的,不过,Windows 7的多语言包安装功能还是要比以前的系统方便了许多了。
★ 如何解决春困问题
★ 先解决最难的问题
Linux系统下Mp3标签乱码问题的分析和解决(共7篇)




