歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> Linux下文件名、文件和mp3名字、pdf的亂碼問題

Linux下文件名、文件和mp3名字、pdf的亂碼問題

日期:2017/3/1 18:04:13   编辑:Linux技術

如果是剛剛從windows轉到Linux下的,通常都會因為一些中文的問題而放棄,我就是這樣裝上,卸載搞過好幾次,其實這種心態是永遠都學不到東西的,真正的學者都具有一顆大無畏的精神,在他們的字典裡是找不到退縮的,好了,不扯了,下面轉入正題。

這裡我用到了三個工具,convmv, iconv, python-mutagen.分別處理上述三個問題,下面一一介紹:

convmv 實現文件名字的轉換:
sudo apt-get install convmv
convmv -f code1 -t code2 -r

code1:目錄原來使用的字符集編碼。支持gb2312, gbk, big5,不支持gb18030和big5-hkscs
code2:預轉換到的字符集編碼。對於ubuntu,這裡填寫utf8

-r 參數:轉換子目錄
-f : from
-t : to
dir:要轉換的目錄

man convmv查看幫助文件,這個非常有用,學會看Linux的幫助文檔對於Linux和英語的學習都有很大益處,強烈建議大家多使用man命令:)

iconv實現文件內容的轉換:

iconv -f code1 -t code2 oldfile > newfile

其他命令和參數請大家使用man進行查閱,並不是我懶,我是不想讓大家變懶,不管怎樣,我們都應該自己去體會這個過程,這樣才能把它真正學會。

python-mutagen---mp3 ID3 tags設置工具
Mutagen 是一個用來處理聲音相關數據的 Python
模塊.它支持 ID3(所有版本),APEv2,Ogg Vorbis,FLAC和Ogg
FLAC讀取,以及ID3v1.1,ID3v2.4,APEv2,Ogg Vorbis,FLAC還有Ogg
FLAC信息寫入.也可以用來讀取MPEG音頻和Xing標題.FLAC流信息塊,以及Ogg vorbis,Ogg
FLAG流標題.最後,它包含一個處理Ogg 流的模塊.
mid3v2 -a artist -A album -t title -c comment -g genre mp3file
設置mp3file的ID3 tags
find . -iname "*.mp3" -execdir mid3iconv -e GBK {} \;

這會轉換當前目錄其子目錄中的 mp3 文件標簽編碼為正確的 utf8,-execdir意思是對查到的每個文件執行後面的shell腳本,腳本中-e GBK意思是文件原來使用的字符集編碼,讀者還可以man find一下,看看-iname和-name的區別,呵呵,總是喜歡給你們賣關子:)
PDF亂碼問題解決:
第一步,安裝中文語言支持包:
sudo apt-get install xpdf-chinese-simplified xpdf-chinese-traditional
安裝完後打開pdf文檔,如果發現仍然是亂碼,進行第二步,安裝安裝poppler-data:從8.04開始,源中開始提供poppler-data安裝包的支持,可以直接輸入命令
sudo apt-get install poppler-data
或者去官方下載tar.gz壓縮包自己安裝,網址是
http://poppler.freedesktop.org/
,自己編譯安裝,在此不在熬述
若第一,二步完成後,打開pdf文檔中文亂碼都變成方塊的話,就進行第三步,刪除字體
sudo rm /etc/fonts/conf.d/49-sansserif.conf
好了,到這裡,相信大家可以開心的使用Linux了,我是很開心啦,一次性解決了亂碼問題是一方面,另一方面,今天我的blog被Google收錄了,呵呵,這就意味這我的這些筆記可以給更多的人提供參考了,同樣我的筆記也借鑒了很多人的筆記,正所謂取之於民,用之於民也 :)

只需要把mp3標簽裡面用gbk、gb18030、big5等編碼存儲的中文內容修改為Unicode編碼,那麼基本上所有Linux下的播放器都能正常識別mp3標簽了。
關於mp3編碼的轉換,介紹一個工具----Mutagen,假如你安裝了Quod Libet,那麼這個包已經安裝上去了。如果沒有,執行下列命令就可以了。

sudo apt-get install python-mutagen

工具的使用方法

#轉換mp3文件所在的目錄下,執行:
mid3iconv -e gbk *.mp3
#轉換當前目錄下所有mp3文件(包括子目錄)執行:
find . -iname "*.mp3" -execdir mid3iconv -e gbk {};
如果覺得每次都要輸入命令很麻煩,也可以建立個shell腳本來批量轉換:
新建文件,寫入:


復制代碼代碼如下:
#!/bin/sh
IFS=""
find . -iname "*.mp3" -execdir mid3iconv -e gbk {};

然後把文件保存,拷貝到想要轉換的目錄下,執行就可以了(執行腳本的命令為 #sh filename)。

因為現在在網上下載的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為UTF8
sudo apt-get install convmv
convmv -r -f cpArray36 -t utf8 ?notest ?nosmart *
批量轉換src目錄下的所有文件內容由GBK到UTF8

find src -type d -exec mkdir -p utf8/{} ;
find src -type f -exec iconv -f GBK -t UTF-8 {} -o utf8/{} ;
mv utf8/* src
rm -fr utf8

轉換文件內容由GBK到UTF8
iconv -f gbk -t utf8 $i > newfile
轉換 mp3 標簽編碼
sudo apt-get install python-mutagen
find . -iname "*.mp3" -execdir mid3iconv -e GBK {} ;

Linux下MP3名字亂碼

解決方法:安裝python-mutagen
安裝方法(root權限,你懂得)
fedora等紅帽的:
yum install python-mutagen
ubuntu等debian的:
apt-get install python-mutagen
安完後
mid3iconv -e gbk *.mp3
OK~

Copyright © Linux教程網 All Rights Reserved