我愛用的Debian小工具(連載) 二、簡繁中文隨心換(轉)

post0發表於2007-08-11
我愛用的Debian小工具(連載) 二、簡繁中文隨心換(轉)[@more@]

  我愛用的Debian小工具(連載)

  第二集、 簡繁中文隨心換 ── hztty與zh-autoconvert

  儘管GBK/GB18030已經包含了大部分繁體字元,Unicode也越來越流行,但傳統的GB/Big5編碼依然是絕大多數系統及軟體的預設設定。如此一來,簡繁轉換就變成了很多中文使用者都要面對的問題。

  我把簡繁轉換這個任務分成了兩種型別:

  一、靜態轉換,即對檔案或標準輸入輸出進行操作;

  二、動態轉換,即在以普通中文輸入法時,進行即時轉換,例如,用fcitx進行輸入,但得到的是Big5碼繁體。

  今天要講的兩個工具都是由國內的Debian維護者於廣輝先生編寫的軟體。

  對第一種型別,我們們使用提智慧轉換工具zh-autoconvert,操作的命令有兩個autogb/autob5。該軟體能透過對常用詞語的比較來實現自動判斷檔案的型別,這比那些需要手動指定輸入輸出編碼的軟體要方便很多,如果文章有一定的長度(比如1000字),識別準確度將達到100%。可以用該軟體deb包中附帶的幾個不同編碼的文字(內容是《射鵰英雄傳》第一章)進行一下驗證。

  舉例說明:

  zh-autoconvert是直接對stdin/stdout進行操作,最簡單的使用方法就是在終端中執行autogb,然後輸入簡體中文,然後按Ctrl+D,標準輸出上就會出現一堆亂碼,實際上就是您所輸入的內容的Big5繁體版,反之亦可。

  如果想將一未知編碼(非UTF-8)的檔案轉換為簡體GB文件,命令是autogb < in.txt > out.txt;若要獲得繁體Big5文件,則是autob5 < in.txt > out.txt。

  因為UTF-8文件中可能同時包含簡繁,甚至XX語字元,因此自動判斷功能不太適用。

  假如已知待處理的中文文件是UTF-8編碼,則可以使用"-i utf8"引數,例如autogb -i utf8 < in.txt > out.txt,繁體類推。

  以上只是zh-autoconvert最簡單的使用方法,實際上zh-autoconvert可支援在大部分中文編碼之間任意轉換,包括gb, big5, hz, unicode, utf7 和 utf8。因此,在整理一些老舊文件時,也會特別有用。但如果你的文件內同時存在幾種不同編碼,那zh-autoconvert也幫不上你了。

  在Debian mailing list上有一個很成功的應用此軟體的例子。Debian中文郵件列表為了方便不同的使用者,被分拆成兩個版本debian-chinese-gb和debian-chinese-big5,而為了整合資源避免重複勞動又需要這兩個郵件列表之間能互通。即一封發給debian-chinese-gb的郵件,在兩個列表中都可以收到,而且不會因為編碼不同而出現亂碼。其實這就是將zh-autoconvert應用到郵件列表服務軟體中,自動將任意一個列表收到的郵件轉成另一種編碼碼並存到對方列表中,是不是很簡單呢?如果你已經安裝了zh-autoconvert,看看軟體文件,裡面就有這個例子的詳細說明。(可惜我們們的Debian中文郵件列表已經停止工作大半年了,原因不明)。

  看過第一種型別的說明,大家可能會說,這軟體有什麼稀奇的。但第二型別就不一樣了。

  試想一下,如果你想在GB簡體中文環境系統中登入到繁體中文IRC上去跟臺灣香港的朋友實時聊天,麻煩就比較大了。例如fcitx,就只能輸入GB碼中文,在別人看來就全是天書了。怎麼辦?嘿嘿,hztty這時就可以派上用場了。

  (我對字元介面的irc程式不熟,以前曾經在bitchx和irssi上成功的試驗過,但很多操作都不記得了,因此在這裡拿vim來代替。)

  在中文終端下執行hztty -I gb2big -O big2gb vim,然後在vim中輸入任意中文字元。咦?沒變化嘛,別急,先存檔再說。再直接開啟剛剛儲存的檔案,哈哈,看到一堆亂碼了吧,成功!也就是說在螢幕依然顯示簡體的情況下,vim實際處理的已經是Big5繁體了。

  是不是有點暈,去看看hztty的文件。另外,它跟zh-autoconvert一樣,能即時處理的編碼也相當多的。

  Debian中還有個叫yiyantang(一言堂)的軟體也是類似的功能,我試了一下,但沒成功,不如hztty好用。

  請各位多多嘗試使用不同的工具組合,說不定你還能找到更實用的功能喲

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-945866/,如需轉載,請註明出處,否則將追究法律責任。

相關文章