音樂格式的標籤(tag)與編碼


CDs

id3v1: ISO-8859-1
id3v2.3.0: ISO-8859-1, UTF-16 (with BOM)
id3v2.4.0: ISO-8859-1, UTF-16 (with or without BOM), UTF-8
APEv2: UTF-8
Vorbis comment: UTF-8

根據 ID3.org 的說明,目前對 ID3 tag 支援較廣的版本是 ID3v2.3.0,從這版開始,至少我們多了 UTF-16 的支援。但是那些只有 ID3v1 的 mp3 呢?這實在一個令人頭大的問題。

剛剛稍微找了一下,發現了「Linux下mp3标签乱码问题的分析和解决」與「对 mp3 乱码问题的分析和解决」這兩篇文章,他們也提供了幾種方法,可以把幫你把討厭的 ID3v1 標籤移除,加上支援 Unicode 的 ID3v2 和 APEv2。

那事情就這樣結束了嗎?並不完全是,許許多多的情況下我們會看見 ape 以及一個 cue 檔,這個 cue 檔紀錄歌曲名稱、長度、歌手等 meta data,但是這個 cue 檔也是另外一個編碼格式不明的灰色地帶。就算使用支援度相當好的 foobar2000 也不可免俗的會遇到這個問題,只要 foobar2000 讀取的 cue 檔沒有 BOM,他就會以 ISO-8859-1(還是 CP_ACP 啊)將相關的資訊存回去。這時候,只要乖乖的加上 BOM,一切就天下太平。

也許明天我該來寫一個簡單的程式,把 cue 檔的資訊拿去 freedb 查詢之後,以加上 BOM 的 UTF-8 格式存回去。

這也許是我為什麼喜歡用 FLAC 勝過其他的格式,FLAC 就很單純的使用 Vorbis Comment,沒有別的編碼方法,就是 UTF-8。要帶出門的話,直接丟進 iaudio 系列的隨身聽就好,以後移到別的系統也不會有問題。

不過,iaudio 的隨身聽還真是貴啊~~~~~。


One response to “音樂格式的標籤(tag)與編碼”

  1. 原來 foobar2000 讀取的 cue 檔沒有 BOM 就會以 ISO-8859-1 將相關的資訊存回去喔~

    難怪每次 emule 抓回來的大部分 cue 檔,直接用 foobar2000 開都會出問題(不是亂碼就是讀不到)。

    所以每次都得用
    ConvertZ
    轉好 cue 檔再丟給 foorbar2000 開~

Leave a Reply

Your email address will not be published. Required fields are marked *