- 論壇徽章:
- 0
|
因最近有個項目,需要在linux下控制臺下進(jìn)行漢字的處理,因此用centos 5.2試了一下zhcon和cce,最終發(fā)現(xiàn)cce對漢字和制表符的識別沒有zhcon的準(zhǔn)確,有時候會出現(xiàn)亂碼。因此最終選用zhcon,現(xiàn)將測試過程中發(fā)現(xiàn)的幾個問題寫下來,以供大家參考
一、zhcon的安裝是參考《Linux操作系統(tǒng)控制臺中文顯示與中文輸入》這篇文章,
二、在使用zhcon后,無法使用ctrl+alt+1,2,3來切換輸入法,只能按ctrl+space來切換第一個輸入法,這是因為2.6內(nèi)核下,linux console driver, 將每次按鍵轉(zhuǎn)換成相應(yīng)的 utf-8 串, 然后發(fā)送到前臺進(jìn)程的 stdin 里. 因此,zhcon讀取到的是已經(jīng)轉(zhuǎn)換過的utf-8字符串,因此無法識別輸入切換鍵,cce也有同樣的問題。對此問題,我的解決方法是:將/etc/sysconfig/i18n中的“LANG="en_US.UTF-8"”這一句話屏蔽掉,然后重新啟動,此時,大家進(jìn)入bash,用locale可以看到
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_M
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
此時,CCE已經(jīng)可以切換輸入法,但是zhcon還不行,因為zhcon會重新設(shè)置LC_ALL,因此要修改源程序,將zhcon.cpp的636-673中有關(guān)LC_ALL的語句屏蔽掉,重新編譯,即可切換輸入法了。
三、有關(guān)zhcon輸入法的問題,zhcon內(nèi)置的輸入法只提供基本的輸入功能, 不過zhcon提供了對TurboLinux的unicon輸入法模塊的支持,按照其網(wǎng)站(http://zhcon.sourceforge.net/faq_cn.html)上講,可以很方便的使用unicon(chinput)的輸入法,但我試了多次也沒成功,可能與我沒有裝Xwindows環(huán)境有關(guān),況且unicon還要重新編譯內(nèi)核,我嫌麻煩就沒試了,編譯minichinput雖然成功,但是無法啟動,因此決定對使用zhcon自帶的輸入法,發(fā)現(xiàn)其自帶的輸入法無法輸出GBK字符,原因有以下兩個,
。笔莣inime.cpp中屏蔽了GBK字符的輸出,修改winime.cpp的第35行,將mGBKOut(false)改成mGBKOut(true),重新編譯即可,老實(shí)說,這是偷懶的做法,比較好的做法,是根據(jù)zhcon.conf中有關(guān)defaultencode 的設(shè)置及ime部分關(guān)于輸入法的設(shè)置來動態(tài)修改比較好,因為按我的這種偷懶做法,會出現(xiàn)defaultencode = GB時也會出現(xiàn)GBK字符,但是顯示為亂碼的問題。不過不影響使用
。彩瞧渥詭У妮斎敕ǖ拇a表中沒有GBK字符,因此我對常用的拼音、雙拼根據(jù)win xp下的碼表重新制作了碼表,五筆則是根據(jù)海峰五筆7.0的碼表,只能用7.0版本的,7.0以上的版本中帶有大量unicode字符。我把碼表制作方法在此簡要記錄一下(以拼音為例)
用win xp中自帶的輸入法生成器(imegen.exe)對碼表進(jìn)行逆轉(zhuǎn)換,碼表文件在\windows\system32\winpy.mb,得到\windows\system32\winpy.txt,
將winpy.txt用ultraedit的轉(zhuǎn)換功能轉(zhuǎn)換成ascii編碼,文件-》轉(zhuǎn)換-》Unicode到ascii,存盤即可
將轉(zhuǎn)換后的winpy.txt上傳到linux中,如果上傳就不用寫了
在linux中使用dos2unix轉(zhuǎn)換回車換行鍵,dos2unix -o winpy.txt
用zhcon中自帶的工具把txt文件轉(zhuǎn)換成碼表文件,該工具在zhcon源碼中的tools目錄中,make install時并不會自動隨zhcon一起安裝,這應(yīng)該是個bug, 該目錄中有個README,有使用方法,
./win2mb < winpy.txt > winpy.mb
然后把winpy.mb拷貝到/usr/local/lib/zhcon/input中
cp -f ./winpy.mb /usr/local/lib/zhcon/input/py.mb
然后修改/usr/local/etc/zhcon.conf中第98中有關(guān)設(shè)定值
ime = 全拼,,input/py.mb,gb,native,修改為
ime = 全拼,,input/py.mb,gbk,native
其他輸入法一樣修改之,應(yīng)該是可以用的
也許還有其他的問題,但我目前沒試出來,也許沒寫出來,歡迎大家與我QQ(1247741)交流,
[ 本帖最后由 whitecat 于 2008-10-15 16:49 編輯 ] |
|