2012年2月6日 星期一

Linux繁、簡與UTF8間轉換

繁體(正體中文) 與簡體和UTF8 之間的轉換在Windows 下已有不少工具,諸如ConvertZ… 之類的軟體
在Linux 下,沒有ConvertZ,突然懷念起Windows 下有許多好用的軟體 ><
心裡一直覺得,Linux 不該只有這二把刷子,一定有什麼東西可以轉換…上google 查到了一些資料
經過試驗之後,將心得記錄如下:

GNU libiconv 這個library 是編碼轉換的核心程式庫,除了提供程式控制界面之外,也提供了可操作指令 「/usr/bin/iconv」
iconv 主要參數有
-f   原始文字的編碼
-t   欲輸出的文字編碼
-l   列出已知編碼字元集
 
例: iconv -f big5  -t gb2312  test.big5.txt  > test.gb.txt
繁-->簡,這行指令就能把內容為big5編碼檔 test.big5.txt 轉換成gb2312 並輸出為 test.gb.txt

例: iconv -f big5  -t utf8  test.big5.txt  > test.utf8.txt           
big5-->utf8,這行指令就能把內容為big5編碼檔 test.big5.txt 轉換成utf8 並輸出為 test.utf8.txt

例: iconv -f utf8  -t gb2312  test.utf8.txt  > test.gb.txt
utf8-->gb2312,這行指令把剛剛轉換出內容為utf8的編碼檔 test.utf8.txt f8轉換成gb2312 並輸出為 test.gb.txt

如果是utf8 簡體-->utf8繁體,就比較麻煩要三道手續
1. utf8簡體 -->gb2312        「iconv -f utf8 -t gb2312 test.gb.utf8.txt >test.gb.txt
2. gb2312 --> big5          「iconv -f gb2312 -t big5 test.gb.txt >test.big5.txt
3. big5 --> utf8繁體         「iconv -f big5 -t utf8 test.big5.txt >test.big5.utf8.txt

上述作法看起來很累,需要多產生二個中繼檔(test.gb.txt,test.big5.txt)
有沒有更smart 的做法呢,當然有,可以善用「管線 (PIPE)」功能
例:
iconv -f utf8 -t gb2312 test.gb.utf8.txt | iconv -f gb2312 -t big5 | iconv -f big5 -t utf8 > test.big5.utf8.txt
簡單吧!!一個指令完成 ^_^

iconv 的輸入可以接受 * 鍞的萬用字元,也可以間接的把一推文字檔轉換後放到同一個檔案中

除了 iconv 之外,也有不少軟體可以做繁簡轉換
例:
pycodec - 中文碼/萬國碼轉換程式
參考ddy1280大作