2008年10月24日 星期五

Big5轉UTF-8

好久沒寫一些筆記了,最近忙著上課,每天的生活都很勞累,讀書的時間卻不多,晚上又不能讀書,情況真是岌岌可危....

一般而言,linux users要讀取呆呆windows上的純文字內容時,會遇到幾個困難:
1.檔名的編碼不同。
2.檔案內容的編碼不同。
3.檔案格式不同。
就算今天是一個binary,還是會有檔名的問題,除非你透過FTP或是samba在傳輸前已經先幫你轉換檔名編碼過了。以下針對這三點來作說明:

更換檔名--使用convmv
dpkg -l convmv || aptitude install convmv -y

1.列出系統可用的編碼:convmv --list
2.基本語法:convmv -f big5-eten -t utf-8 abc.txt --notest
     -f: from
     -t: to
     --notest:真的轉檔,預設只是測試而已。
     --nosmart:convmv會自動偵測是否已為目的編碼,是的話就不做處理。如果真的有無法轉換過去的問題,可以試著加入--nosmart參數,這是optional。
3.轉換單一檔案:

convmv -f big5-eten -t utf-8 abc.txt --notest
4.轉換某路徑及其下的所有檔案:
convmv -f big5-eten -t utf-8 -r --notest
這比較常用,因為你已經無法正確的輸入檔名了,因此從某個目錄為起點下這個指令比較方便。

更換檔案內容:iconv
其實很多人比較需要這個,因為現在許多GUI軟體都會自動轉換檔名的編碼,非常人性;不過檔案內容就沒辦法了,需要手動解決。

dpkg -l libc6 || aptitude install libc6 -y
1.列出可轉換的編碼:
iconv --list
2.開始轉啦:
iconv -f big5 -t utf-8 oldfile.txt > newfile.txt
iconv語法跟convmv很像,也比較簡單,一次轉一個檔案。他沒辦法直接用原來的檔名,僅戶列出轉換後的結果到螢幕上,因此給個stdout過去存成一個新檔就可以了。

更換檔案格式:dos2unix

dpkg -l tofrodos || aptitude install tofrodos -y
1. tofordos套件內含兩隻程式:unix2dos以及dos2unix,從名稱來看再清楚不過了。這兩個指令單純解決windows跟unix系統換行定義的問題。
2.轉換一個從呆呆windows來的純文字文件:
dos2unix abc.txt
會自動將abc.txt轉成unix格式。同樣的在unix-like的環境下編輯的ascii,呆呆的一定不懂,這時後轉給windows users就要先下:
unix2dos abc.txt

2 則留言:

匿名 提到...

嗨嗨,您好,

感謝您的iconv說明..
解決小弟很大的困擾..

*^_^*

Charlie

Unknown 提到...

Hi~

轉換編碼的話enca也不錯唷,還支持偵測編碼

先用enca -L zh [filename] 偵測檔案編碼

在用enca -L zh -x [要轉換的格式 例如UTF-8] [要轉換的filename] [轉換後的filename]

很方便~

Oni