LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1262|回复: 2

怎样将自己写的文本格式表码源文件转换成scim使用的bin格式data表码文件?

[复制链接]
发表于 2004-10-13 16:55:23 | 显示全部楼层 |阅读模式
我按照微软输入法生成器使用的表码格式编写了一个粤语全拼输入法表码文本文件,现在想将它引入scim中去。scim的表码都放在/usr/share/scim/tables中,是一些扩展名为.bin的data文件。请问怎样将我的.txt文本表码源文件转换成scim使用的data文件?
发表于 2004-10-13 21:47:21 | 显示全部楼层
拼音没弄过,不过已经转换过表形码,

可以参考

http://www.linuxsir.cn/forum.php ... A%D4%EC%C2%EB%B1%ED

sofoot 兄弟提供的转换程序
http://download.linuxsir.cn/scimtableshowto/winbx.rar
http://dato.minidns.net/mambo/index.php/content/view/5/26/

ground兄弟提供的fcitx的转换脚本也可以,主要是转换unix的文本格式然后转换为Utf8格式+上scim的表头部分就可以了
原来的码表格式:(先把开头的无用信息删除)
工a aaaa
式aa aayi
工aaa aaaa
恭恭敬敬aaaa

tcitx码表格式:
a 工
aa 式
aaa 工
aaaa 恭恭敬敬

先用 dos2unix.pl 转成unix文本格式
usage: perl dos2unix.pl <old98.txt >wb98.txt

#!/usr/bin/perl -w
while(<> ){
s/\r\n$/\n/;
print;
}

再用 wb.pl 转成fcitx格式
usage: perl wb.pl <wb98.txt

#!/usr/bin/perl -w
open(FH,">wbx.mb")||die('open fail');
while($str=<> ){
$str=~s/ .*//; #erase extra data after space
$str=~s/([a-z]{1,4}$)//; #extract encodings
$tmp=$1;
chop($str); #erase \n
if(length($str)%2){ #if true indicate wrong whwn extract encodings
$str.=substr($tmp,0,1); #fix the wrong problem
$tmp=~s/[a-z]//;
}
print FH "$tmp $str\n"; #write to new file
}

去除windowsGBK编的方法
http://home.cfe21.com/firststep/input.htm
不会写程序,转来转去真的可以去除GBK编码哦
先在cmd下执行tw,例如原先的码表为1.txt
然后执行win2uc进行转换
然后使用imdmng 1.txt 2.imd转换为ucdos码表
再使用imdmng 2.imd 1.txt转换为ucdos码表原文件
ok现在可以使用uc2win95生成了
发表于 2004-10-14 12:01:34 | 显示全部楼层
scim自带转换工具scim-make-table

$PATH/scim-make-table mb.txt -b -o mb.bin

txt和bin可以互转.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表