咖啡日语论坛

 找回密码
 注~册
搜索
查看: 3962|回复: 13

[使用心得] 在EPWING中支持非日汉字查询的方法

[复制链接]
发表于 2008-2-4 12:22:44 | 显示全部楼层 |阅读模式
大家知道EPWING是日本词典标准,并没有考虑unicode支持,仅仅支持JIS X0208。其他字符需要以外字的方式指定。现在大部分词典都不支持中文非日汉字直接查询,因此在小学馆中日-日中1的时代都是用拼音全文查询的。昨天在Google上查了一下EPWING的一些资料,加上和HappyMM的讨论,以及学习了C2EPW的工作方式,我提出了一种在EBWIN中支持任意unicode字符查询的方法,并且在今天实验成功。希望大家指教:

1. 在词典中加入类似C2EPW unicode的16进制编码的字符串作为索引。例如:(文中汉字应该为实体引用形式,但帖子中被转成了汉字:>)
unicode.htm
<dt noindex="1">藏</dt>
<key type="表記">85CF</key>
<dd><p>藏</p></dd>
<dt noindex="1">獒</dt>
<key type="表記">7352</key>
<dd><p>獒</p></dd>
<dt noindex="1">藏獒</dt>
<key type="表記">85CF7352</key>
<dd><p>藏獒</p></dd>
</dl>

2. 定义EBStudio的汉字映射,将unicode映射到外字定义。例如:
ganji.xml
<?xml version="1.0" encoding="Shift_JIS"?>
<gaijiSet>
<gaijiMap name="藏" unicode="#x85CF" ebcode="A121"/>
<gaijiMap name="獒"  unicode="#x7352"  ebcode="A122"/>
</gaijiSet>

3. 用EBStudio制作epwing词典

4. 定义EBWIN的GANGI/*.map文件,将外字映射回unicode。例如:
unicode.map
zA121        u85CF        #
zA122        u7352        #

5. 最关键的一步,定义alternate.ini,将输入的unicode字符转换成类似C2EPW unicode的16进制编码的字符串。例如:
alternate.ini
u85CF        85CF
u7352        7352

7. 查询字典时可以用汉字"藏獒"进行查询,也可以用unicode编码"85CF"、"7352"。

8. 注意,EBWIN必须是unicode版的才行。

http://coffeejp.com/bbs/viewthread.php?tid=192994&extra=page%3D1

我做好的测试词典,unicode.rar (3k)

现在好像有问题,贴不了图。图片压缩包(57k)
1. 测试环境,windows XP Pro英文版,locale为中文。
2. EBWin版本为2.11 unicode
   version.jpg
3. 再安装unicode.map,没修改alternate.ini是可以使用unicode码查询。
   code.jpg
4. 在修改alternate.ini后可以用汉字查询
   hanji.jpg



完整unihan 5.0剔除JIS X 0208后的外字定义+perl源代码
unihanv5.rar(130k)
Unihan Database

[ 本帖最后由 lxu4net 于 2008-2-4 21:57 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2008-2-4 12:35:51 | 显示全部楼层
该方法的缺点:
1. 外字定义从0xa121 ~ 0xfe7e,仅能定义23901个,可以映射全部的GBK字符(21885),但无法覆盖所有的GB18030(27000汉字)和unihan。
2. 增加了索引使用的磁盘空间。一个汉字用原来占2个字节,现在需要4个字节。
3. alternate.ini是EBWIN的全局定义文件。修改它可能会影响其他词典的使用。

[ 本帖最后由 lxu4net 于 2008-2-4 12:38 编辑 ]
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2008-2-4 15:02:16 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-4 15:44:10 | 显示全部楼层
不会查不到呀,我都试过了。
EBWIN必须是unicode版,unicode.map和alternate.ini要装到application data下去。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-4 16:31:30 | 显示全部楼层
已上传截图。
我想"藏獒"的"獒"字应该是非日汉字吧。
回复 支持 反对

使用道具 举报

发表于 2008-2-4 20:16:28 | 显示全部楼层
其實之前做的字典  就是透過 C2EPW 做成這些效果
簡中漢字查詢  就是透過 alternate.ini 做 unicode 去對應查詢
問題在於 "本文" 中的部分  未經過表記處理的部分  是無法 "簡中漢字查詢的"
而且 如果將簡中本文  全部做成表記
結果是可以 "前方檢索" "後方檢索"
但是 "全文檢索" 還是會失效
這個才是不方便的地方

而且日文漢字  硬設成 unicode 碼  反而會無法檢索的

[ 本帖最后由 HappyMM 于 2008-2-4 20:24 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-4 21:51:22 | 显示全部楼层
1. 这个方法解决的是keyword里无法使用使用外字的问题。全文检索的确有问题。应该是所有外字都无法进行检索的吧。
2. 日文漢字不需要設成unicode碼。所有JIS X 0208字符集内的汉字,都不在alternate.ini里定义,仍然保持原样。这个可以从"http://unicode.org/charts/unihan.html"得到数据。我已经根据unicode 5.0的unihan数据库生成了一个过滤掉JIS X 0208的映射表,一共21617个字符。

谁能发个小学馆2的文本给我,我可以尝试完成支持中文索引的小学馆2。
回复 支持 反对

使用道具 举报

发表于 2008-2-4 23:25:37 | 显示全部楼层
关键是做成alternate.ini ,作成汉<=>日(JIS0208)的汉字对应关系。
不建议作成楼主讲的这个样子,alternate.ini 是通用于所有的EPWING词典的,若是汉字对应编码,那么为了你所作的词典,其它词典就不能正常使用了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-4 23:38:15 | 显示全部楼层
alternate.ini中因为只定义了JIS0208以外的汉字,英语和日语的词典应该是不受影响的。
"汉<=>日(JIS0208)的汉字对应关系"这个我有点不明白。在unicode中字形相同的汉字编码是一样的。EBWIN不需要在alternate.ini中定义,应该就可以转成JIS0208。难道这里指的是字形不同,意义相同的汉字?
回复 支持 反对

使用道具 举报

发表于 2008-2-5 02:46:02 | 显示全部楼层
外字の開始コード。外字の範囲はA121~FE7F。
※94点を1区として割り当てる(A17Eの次はA221となる)

所以外字是無法定義到 2萬多個字的
A121~A174E: 94個字  而不是 A121 ~ A1FF: 223 個字
A221~A274E
依此類推

所以最多只能到 8000 ~ 9000 個字左右
回复 支持 反对

使用道具 举报

发表于 2009-9-12 16:16:00 | 显示全部楼层
值得继续讨论啊
回复 支持 反对

使用道具 举报

发表于 2009-9-20 19:31:11 | 显示全部楼层
确实是epwin中文词典的福音
回复 支持 反对

使用道具 举报

发表于 2009-10-9 14:45:22 | 显示全部楼层
實用,感謝~~
回复 支持 反对

使用道具 举报

发表于 2010-3-12 22:30:57 | 显示全部楼层
非常有用
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注~册

本版积分规则

小黑屋|手机版|咖啡日语

GMT+8, 2024-10-1 22:05

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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