2013年6月2日 星期日

[Linux] 文字檔編碼工具

[Linux] 文字檔編碼工具

一開使用這些工具是因為在 linux 下的 smplayer 在載入影片字幕的時候,

雖然設定成解 big5 編碼,可是還是會有部份的字變成亂碼,

把字幕檔轉成 UTF-8 就沒有這個問題了,另外偶爾也會遇到 code 裡面有中文註解,

用 gedit 開會有解碼錯誤的問題,或是一些原本 windows 底下的檔案。

iconv

沒記錯的話 ubuntu 12.04 預設是有安裝,

最早用的工具,因為參數蠻好記的範例如下:

iconv -f big5 -t utf8 -o output.txt input.txt

-f form-code

-t to-code

-o 輸出檔名

enca

用了一段時間後突然想到,是不是應該在轉換前先檢查一下檔案原本的編碼是什麼,

因為偶爾也會遇到簡體的編碼,

一開始想到的是用 file ,的確 file 可以用來檢查編碼,

不過後來發現了一個缺點,big5 編碼的檔案會被誤認成 ISO-8859,

所以就查到了這個,Ubuntu 12.04 預設沒有安裝 apt-get install enca 一下就可以了。:

enca input.txt

就可以檢查檔案編碼了,在 manpage 裡面可以查到他支援的編碼,測了幾個檔案 big5 可以正常偵測

另外更強大的是這個 enconv 他可以用來直接把檔案轉成系統的編碼:

enconv input.txt

假設系統編碼是 utf-8 而 input.txt 是 big5 編碼,那 input.txt 就會被轉成 utf-8,

非常的方便,完全不需要什麼參數 :)

當然,這兩個工具都有其他更多的參數可以使用,有興趣的可以問一下男人,

另外還有看到其他的工具像是 convmv 參數跟 iconv 類似,不過就沒有裝來玩了。