Rhythmbox中文亂碼解決的方法

轉自:http://hi.baidu.com/morgensonne/item/3470aef58747abde6325d2d9python


今天在網絡上找到了一個比較好的解決Rhythmbox中文亂碼的問題的方法 

進入你的音樂目錄運行例如如下代碼: 
mid3iconv -e GBK *.mp3 
假設沒有提示多試幾回,
有可能系統會提示:

python-mutagen沒有安裝。 
sudo apt-get install python-mutagen 安裝。

輸入如上的命令,回車。等安裝好程序以後,再回到你的音樂目錄,
輸入命令: mid3iconv -e GBK *.mp3 回車。
而後又一次打開rhythmbox,OK! 所有mp3都能正常顯示了。

linux

mid3iconv 命令主要是將原來mp3音樂文件的ID3信息轉換成了Unicode並用ID3v2的格式存迴文件裏。ubuntu

----------------------------------------------------------------------------------------------
網絡

另一個是用 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自帶的一款音樂播放器,功能還算比較強大,使用也簡單。惟一的缺點就是中文顯示亂碼,緣由是由於編碼不一樣所致。編碼

在這裏介紹一個解決方法,改動變量。spa

在終端輸入:code

1vi~/.profile

在最後添�如下內容:rem

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的標籤類型和編碼,現在主要存在這幾種標準,ID3v一、ID3v2 2.三、ID3v2 2.四、APEv2。它們分別支持的編碼爲 ID3v1:僅僅支持ISO--8859-1 ID3v2 2.3:ISO--8859-一、UTF-16 ID3v2 2.4:ISO--8859-一、UTF-1六、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同一時候含有ID3v一、ID3v2 2.三、ID3v2 2.四、APEv2這4種類型中兩種以上的時候,播放器對mp3標籤的讀取順序一般是由上往下的,APEv2(前提是播放器支持此編碼的讀 取)---ID3v2---ID3v1。因此有時候會出現同一文件Rhythmbox顯示標籤正常(讀取APEv2標籤),其它播放器不正常的狀況(讀取 了ID3的標籤)。 接着咱們說說在Linux系統裏,爲何所有的mp3播放器都會有亂碼的問題,這是因爲這些mp3播放器都是依賴系統內的libid3tag庫全然依照 ID3的標準來讀取標籤內容的。 它不論mp3是採取何種的標準的標籤(ID3v一、ID3v二、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的讀取,固然你使用其它的支持ID3v二、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%  就可以讀出來值 最好仍是一試

相關文章
相關標籤/搜索