- 论坛徽章:
- 0
|
因最近有个项目,需要在linux下控制台下进行汉字的处理,因此用centos 5.2试了一下zhcon和cce,最终发现cce对汉字和制表符的识别没有zhcon的准确,有时候会出现乱码。因此最终选用zhcon,现将测试过程中发现的几个问题写下来,以供大家参考
一、zhcon的安装是参考《Linux操作系统控制台中文显示与中文输入》这篇文章,
二、在使用zhcon后,无法使用ctrl+alt+1,2,3来切换输入法,只能按ctrl+space来切换第一个输入法,这是因为2.6内核下,linux console driver, 将每次按键转换成相应的 utf-8 串, 然后发送到前台进程的 stdin 里. 因此,zhcon读取到的是已经转换过的utf-8字符串,因此无法识别输入切换键,cce也有同样的问题。对此问题,我的解决方法是:将/etc/sysconfig/i18n中的“LANG="en_US.UTF-8"”这一句话屏蔽掉,然后重新启动,此时,大家进入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已经可以切换输入法,但是zhcon还不行,因为zhcon会重新设置LC_ALL,因此要修改源程序,将zhcon.cpp的636-673中有关LC_ALL的语句屏蔽掉,重新编译,即可切换输入法了。
三、有关zhcon输入法的问题,zhcon内置的输入法只提供基本的输入功能, 不过zhcon提供了对TurboLinux的unicon输入法模块的支持,按照其网站(http://zhcon.sourceforge.net/faq_cn.html)上讲,可以很方便的使用unicon(chinput)的输入法,但我试了多次也没成功,可能与我没有装Xwindows环境有关,况且unicon还要重新编译内核,我嫌麻烦就没试了,编译minichinput虽然成功,但是无法启动,因此决定对使用zhcon自带的输入法,发现其自带的输入法无法输出GBK字符,原因有以下两个,
1是winime.cpp中屏蔽了GBK字符的输出,修改winime.cpp的第35行,将mGBKOut(false)改成mGBKOut(true),重新编译即可,老实说,这是偷懒的做法,比较好的做法,是根据zhcon.conf中有关defaultencode 的设置及ime部分关于输入法的设置来动态修改比较好,因为按我的这种偷懒做法,会出现defaultencode = GB时也会出现GBK字符,但是显示为乱码的问题。不过不影响使用
2是其自带的输入法的码表中没有GBK字符,因此我对常用的拼音、双拼根据win xp下的码表重新制作了码表,五笔则是根据海峰五笔7.0的码表,只能用7.0版本的,7.0以上的版本中带有大量unicode字符。我把码表制作方法在此简要记录一下(以拼音为例)
用win xp中自带的输入法生成器(imegen.exe)对码表进行逆转换,码表文件在\windows\system32\winpy.mb,得到\windows\system32\winpy.txt,
将winpy.txt用ultraedit的转换功能转换成ascii编码,文件-》转换-》Unicode到ascii,存盘即可
将转换后的winpy.txt上传到linux中,如果上传就不用写了
在linux中使用dos2unix转换回车换行键,dos2unix -o winpy.txt
用zhcon中自带的工具把txt文件转换成码表文件,该工具在zhcon源码中的tools目录中,make install时并不会自动随zhcon一起安装,这应该是个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中有关设定值
ime = 全拼,,input/py.mb,gb,native,修改为
ime = 全拼,,input/py.mb,gbk,native
其他输入法一样修改之,应该是可以用的
也许还有其他的问题,但我目前没试出来,也许没写出来,欢迎大家与我QQ(1247741)交流,
[ 本帖最后由 whitecat 于 2008-10-15 16:49 编辑 ] |
|