<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    老六曰
    曾經(jīng)的小六
    在面內(nèi)容來自ubuntu中文論壇:
         最近嘗試 Listen 和 Banshee 才發(fā)現(xiàn),Rhythmbox 上出現(xiàn)的 mp3 亂碼問題依舊,而且更加嚴重,想要徹底弄清和解決必須搞清兩點,第一, mp3 標簽類型和編碼,第二,各種播放器對 mp3 標簽讀取情況,相信它們應(yīng)該都有相關(guān)的開發(fā)文檔來說明,但我還是用了一個最笨的方法,就是一個一個的測試來得出結(jié)論,真理不是來自于實踐嗎?

    1、了解 mp3 標簽類型和使用的編碼

    首 先說 mp3 標簽類型和編碼,大家應(yīng)該知道目前主要存在這幾種標準,ID3v1, ID3v2 2.3, ID3v2 2.4, APEv2,ID3v1 只支持 ISO-8859-1 編碼 (編碼集參考),嚴格的說它是不支持中文的 (并不代表它不能儲存中文信息,目前中文 mp3 的 ID3v1 標簽都使用這個字段來儲存 GBK/GB18030 編碼的中文信息),而第二版 (ID3v2) 支持的格式增加了 utf-16,直到 2.4 版才開始支持 uft-8,但 ID3v2 標準沒有統(tǒng)一標簽內(nèi)容的編碼,例如 2.4 版的 ID3v2 你可以使用 ISO-8859-1 編碼,也可以使用 utf-16/uft-8 這種 Unicode 編碼格式。做得最好的是 APEv2,它不但有很好的擴展性,而且還把編碼格式統(tǒng)一為 utf-8,這樣一來只要支持 APEv2 讀取的播放器播放帶有 APEv2 標簽的 mp3 就不會存在亂碼問題。

    2、了解各種播放器對 mp3 標簽讀取情況

    接下來研究的就是各種播放器 對這幾種標準的標簽支持程度,測試的播放器有:gnome 自帶的 Rhythmbox 0.10.0, Listen 0.5, Banshee 0.12.1+dfsg-3, Quod Libet 0.24, Exaile! 0.2.8, GMPC 0.13.0, Audacious 1.2.2。

    測試的方法很簡單,用一個 mp3 文件,分別寫入不同類型的標簽 (排列組合下來共 20 多種),在 ID3v1 和 ID3v2 2.3/2.4 中分別使用不同的編碼寫入中文信息 (如 GBK 編碼),然后用這些播放器去讀取,得到其結(jié)果。從這次的測試結(jié)果來看,Rhythmbox 對各種 mp3 的標簽支持最好,這主要歸功于它支持 APEv2 標簽的讀取。而 Banshee 和剩下的播放器完全一樣,都不支持 APEv2 的讀取,這個就能很好的解釋為什么一些 mp3 在 Rhythmbox 上正常,在其他播放器上就會亂碼。原因是現(xiàn)在很多 mp3 為了兼容,都同時使用了 ID3v1 和 APEv2 標簽,Rhythmbox 讀取 ID3v1 一樣會亂碼,但它優(yōu)先讀取了 APEv2 標簽,而 Banshee 這些播放器不支持 APEv2 就只能讀取 ID3v1,當然會亂碼了。

    他們的共同特點就是,所依賴的 libid3tag 庫完全按照 ID3 標準來讀取標簽內(nèi)容。不管使用何種標準的標簽,只要是讀取以 Unicode 編碼的中文內(nèi)容,肯定沒有問題,遇到 GBK/GB18030 編碼的中文內(nèi)容時,還是把它當成 ISO-8859-1 編碼來讀取,不亂才怪。

    ps: Vista 上的 WMP 不支持 ID3v2 2.4 和 APEv2 標簽的讀取,但它很聰明不能讀取就用文件名代替,千千靜聽支持全系列標簽的讀取,但不支持以 ID3v2 2.4 標準的寫入,不知道即將發(fā)布的 5.0 有變化沒有。foobar2000 v0.9.4.3 支持全系列標簽的讀取,默認使用 ID3v2 2.4 ( utf-8 ) 寫入,不愧被譽為經(jīng)典。

    3、解決辦法

    既然明白了亂碼的原因,就得找解決辦法,一種 辦法就像 Win 上的播放器一樣,可以根據(jù)本地的編碼方式來解碼,或使用一些其他轉(zhuǎn)碼機制,要不還可以選擇優(yōu)先讀取順序。以上測試的播放器中除了 Audacious 外其他都不支自定義編碼讀取功能。另外一個解決辦法就是把 mp3 標簽轉(zhuǎn)換為 Unicode 編碼,這種方式既簡單又支持標準,推薦大家使用。如果像 Banshee 一樣支持顯示文件路徑也可以解決亂碼問題,但這不是根本之道。

    目前發(fā)現(xiàn)有 2 個工具可以把標簽轉(zhuǎn)換為 Unicode 編碼,而且都支持批量轉(zhuǎn)換。

    1) 一個是周楓用 java 編寫的 ID3iconv 0.2.1,最后更新時間為 2004/2/20。

    使用方法:
    java -jar ~/id3iconv-0.2.1.jar -e gbk *.mp3

    如果想轉(zhuǎn)換當前目錄下的所有 mp3 (包括子目錄):
    find . -iname "*.mp3" -execdir java -jar ~/id3iconv-0.2.1.jar -e gbk {} ";

    * 注意以上 ~/id3iconv-0.2.1.jar 位置根據(jù)自己情況而定
    * 相信現(xiàn)在大陸絕大多數(shù)能找到的 mp3 標簽都是以 GBK/GB18030 編碼,使用 -e gbk 來處理就夠了,當然你也可以使用 -e gb18030 來處理。
    * -e gbk 參數(shù)是代表把 GBK 編碼的標簽轉(zhuǎn)換為 Unicode 編碼,本身是 Unicode 編碼的就不轉(zhuǎn)換。如果需要轉(zhuǎn)換其他編碼的文件可以自行修改,如改為 Big5。
    * 經(jīng)測試,轉(zhuǎn)換后為 2.3 版的 ID3v2,編碼格式為 uft-16

    2) 另外一個是用 Python 寫的 “Mutagen”,目前最新版本 1.11,Ubuntu 7.04 源里也帶有 1.10 版本的 Mutagen,可以用這個命令來安裝:
    sudo apt-get install python-mutagen

    ps:安裝 Quod Libet 和 Listen 都必須這個

    使用方法:
    mid3iconv -e gbk *.mp3

    如果想轉(zhuǎn)換當前目錄下的所有 mp3 (包括子目錄):
    find . -iname "*.mp3" -execdir mid3iconv -e gbk {} ";

    * 相信現(xiàn)在大陸絕大多數(shù)能找到的 mp3 標簽都是以 GBK/GB18030 編碼,使用 -e gbk 來處理就夠了,當然你也可以使用 -e gb18030 來處理。
    * -e gbk 參數(shù)是代表把 GBK 編碼的標簽轉(zhuǎn)換為 Unicode 編碼,本身是 Unicode 編碼的就不轉(zhuǎn)換。如果需要轉(zhuǎn)換其他編碼的文件可以自行修改,如改為 Big5。
    * 經(jīng)測試,轉(zhuǎn)換后為 2.4 版的 ID3v2,編碼格式為 uft-16
    * 不過它會同時用 Unicode 編碼填滿 D3v1, ID3v2, APEv2 標簽,但是 ID3v1 又不支持中文的 Unicode 編碼,所以轉(zhuǎn)換后的 ID3v1 標簽全是問號。所以最好加上 –remove-v1 參數(shù),轉(zhuǎn)換后刪除 ID3v1 標簽。
    mid3iconv -e gbk --remove-v1 *.mp3

    我的使用情況:
        我選擇使用第二種方法,網(wǎng)落安裝,快捷阿。呵呵,提醒使用的時候,
    find . -iname "*.mp3" -execdir mid3iconv -e gbk {} ";
    這個語句后面是有 ‘;’這個標點符號的。
    posted on 2007-10-27 13:47 死循環(huán) 閱讀(1429) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
     
    主站蜘蛛池模板: 亚洲首页在线观看| 亚洲人午夜射精精品日韩| 色拍自拍亚洲综合图区| 国产精品永久免费视频| 亚洲最大av无码网址| 亚洲天堂免费在线视频| 亚洲精品蜜桃久久久久久| 97人妻精品全国免费视频| 亚洲人成色777777在线观看| baoyu122.永久免费视频| 亚洲AV午夜福利精品一区二区| 无码人妻久久一区二区三区免费 | 亚洲综合熟女久久久30p| 成人av片无码免费天天看| 亚洲色成人中文字幕网站| 亚洲免费在线播放| 亚洲春色另类小说| 成年人免费网站在线观看| 亚洲AV噜噜一区二区三区| 亚洲а∨天堂久久精品| 两性色午夜免费视频| 久久久综合亚洲色一区二区三区| 国产精品怡红院永久免费| 亚洲免费人成视频观看| 黄网址在线永久免费观看 | 国产最新凸凹视频免费| 国产99久久久久久免费看| 亚洲AV日韩精品久久久久| 人成午夜免费视频在线观看| 亚洲1区2区3区精华液| 亚洲精品自在在线观看| 99久久精品日本一区二区免费 | 免费播放在线日本感人片| 亚洲欧洲校园自拍都市| 好爽好紧好大的免费视频国产| jizz18免费视频| 亚洲天堂一区二区三区| 国产乱子伦精品免费女| 久久综合国产乱子伦精品免费 | 2017亚洲男人天堂一| 亚洲无码视频在线|