Loading...

龙文郑码码表 for scim

Filed under: 编程, 软件 — 深柳堂主 @ 2007-06-20 08:28:51 Comments

如果你不幸像我一样,是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:点击这里下载。