Mp3標籤亂碼問題分析與解決方案

此頁由 Linux Wiki使用者Erasin 於 2014年9月6日 (星期六) 00:00 的最後更改。 在Ehzhou和Linux Wiki使用者Chenxing的工作基礎上。

出自Linux Wiki

(重定向自解决MP3歌名乱码问题
提示:此文已超过 10 年(3764 天)未更新,如发现内容过时或有误,欢迎改进:)

目前Linux中流行的很多播放器經常不能正確顯示如歌曲名、專輯名等MP3 tag信息,經過有些工具轉換後,標籤又不能被Windows識別。本文將簡要分析其原因,並給出方便、有效的解決方案。

目錄

原因簡析

MP3的歌曲名、藝術家、專輯名等信息都以一定的編碼格式存儲在MP3標籤中。簡單地說,亂碼出現的原因就是播放器未能準確識別出MP3標籤的中文編碼格式。

具體的說,現在MP3文件的標籤主要有幾種標準:ID3v1、ID3v2(現在常見的又分為2.3和2.4)、APEv2。

ID3v1
這幾乎是MP3文件最早的標籤標準(1996年提出)。它對標籤各欄位的長度有嚴格的限制[1],且沒有考慮多語言問題。於是,一些軟體將GBK編碼的中文直接寫入標籤的相應欄位,從而基本解決了中文歌曲名等問題。(如果欄位同時包含多種語言,這一方法就會出問題了)
ID3v2
1998年的ID3v2帶來了不少改進。如支持變長欄位、UTF-16編碼等等[2]。2000年的ID3v2 2.4進一步支持UTF-8編碼,但這一標準還未得到很好的支持(如Vista里的WMP[3])。

而Linux中的播放軟體通常使用統一的ID3庫,這一庫只探測Unicode編碼。導致用GBK編碼的歌名未能正常顯示。

解決方法

可以從兩個角度解決這個問題。一是轉換已有MP3文件的標籤編碼,二是使用支持GBK編碼的播放軟體。

方案一:更改已有MP3文件標籤的編碼

這是治本的方法,但注意一定要用對工具,如果使用了錯誤的mid3iconv,將導致mp3的標籤不被Windows識別!

mp3tagiconv

mp3tagiconv可以修改MP3文件的標籤,使其同時能被Linux中的音樂播放軟體和Windows Media Player正確識別,且使用方法簡便,推薦使用。

使用方法很簡單,在其項目網站( http://code.google.com/p/mp3tagiconv/ )上下載程序,解壓後直接運行(適用於僅含中、英文的文檔):

$ mp3tagiconv mp3文件路径

mp3tagiconv 需要 mutagen 的支持,確保之前已經安裝。

Foobar

Foobar可以方便地做這一修改,它是Windows中的軟體,也可以在Linux中使用wine運行。要注意安裝Foobar時要安上那個批量修改標籤的支持。用Foobar選中要修改的MP3文件(不能選到其它格式的,否則改標籤的菜單項就出不來),先為音樂加好ID3v1、ID3v2標籤,再去掉音樂的ID3v1標籤,再加上音樂的ID3標籤即可。

EasyTag

EasyTag一款Linux下的標籤處理軟體,設置EasyTag用GBK編碼讀入標籤,用UTF-8編碼寫入ID3v2標籤,用GBK編碼寫入ID3v1標籤即可。

mutagen

Note.gif
注意:
使用該方法處理過的MP3標籤不能被Windows系統和Windows Media Player正確識別,不建議使用該方法!!
Hint.gif
提示:
如果不慎已用此方法處理過MP3文件,可使用Foobar恢復。先使用Foobar的更新標籤功能刪除其ID3v1標籤,再讓Foobar寫入ID3v1標籤。

該方法由於有不良副作用,故略去。


方案二:選用支持GBK的MP3播放軟體

目前,Linux中對中文支持較好的播放器主要有AudaciousSongbird

Audacious是Beep Media Player的繼承,是一款小巧的軟體,存在於DebianUbuntu等軟體倉庫中。使用Audacious時,在頁面上按右鍵,首選項->播放列表->使用自動編碼器檢測這些編碼,選中「簡體中文」即可。

Songbird是一個大型軟體,甚至在播放器加入了瀏覽網頁功能,它支持Linux、Windows、Mac OS X系統。無需任何設置就可以支持中文,不過它不在軟體倉庫中,需要單獨下載。

還有一些軟體,可以通過簡單的修改使其支持GBK編碼的中文。如Exaile,由於它用Python寫成,所以修改其源碼並不複雜。

參考資料

  1. ID3v1文檔
  2. ID3官方網站
  3. 對MP3亂碼問題的分析與解決

本文对您有帮助?分享给更多朋友!

反馈与讨论

发现文档不全面、有错误却没时间编辑文档?想分享自己的经验或见解?欢迎在此留言、讨论。
简体繁体转换