如果你不幸像我一样,是windows自带的郑码的死忠老用户;有一天你突然进入了linux世界,发现没有一款顺手的郑码输入法而寸步难行,举步维艰;那么我前两天所做的工作,或许就对你有一点用。感觉linux郑码是小众软件,不是大众选择。
我把龙文郑码的码表,结合其词频,编译成了scim格式,顿时感觉顺手了。先把用来转换的perl程序贴出来。如果你懒得自己动手编译,给我发个email或跟个贴子就得。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #!/usr/bin/perl -w # 此程序的作用是,把windows下的龙文平台郑码码表,转换成linux下的scim格式备用. # rex.zhasm # 18 Jun 2007 # # $filename="winzm_utf8.txt"; #为解码操作方便,转换为utf8格式. open(ZM,"$filename") or die "can not open $filename!"; while() { if(/([x80-xff]+)(w+).*?(d+)/) { my $cipin=int($3/241*65536); #龙文的词频最高值是241,而scim的最高是65536, #因此这里转换成65536的,以适应scim。 my $code=$2; my $len=length($code)-1; #此处-1,是因为perl的数组下标从0开始. my $hz=$1; #统一起见,使用变量$hz来表示汉字部分. my $line=$code."\t".$hz."\t".$cipin."\n"; #联接成scim的格式. push @{$code[$len]},$line; #按不同的码长,存放到不同的数组中.例如,码长为1,就放到[0]数组中.2就放到[1]中. #此处得到了cnhacktnt的帮助. } } for $row (@code) { @$row=sort(@$row); # 对每组数组按编码的ascii码排序 print "@$row\n"; #打印出每组数组. #可能打印出来后,还需要%s/^s//操作一下. } |
———————————-modification———————————-
22-Sep-2008: 最新版郑码词库for scim:点击这里下载。
