説一下感想吧,這個 libeburc 在看 小説家になろう 的時候得到了很大的幫助。手上的 3 本字典中,雖然只用了一本,但一本好像就夠了。字典是很厲害的東西!
至於在 wen10 上要怎麼安裝及使用詞典,這我在半年前應該寫了在 github 才對。有興趣的話不妨去試用一下?
===
我説過我手上有三本詞典吧,第一本是 《大辭林》 ,第二本是 《新明解国語辞典》,第三本則是 《小学館「中日/日中辞典」》。
平常一直用的是 《大辭林》,最近才試了一下 《新明解》 ,發現用不了,然後又急忙修好了。所以手上有兩本詞典是能用的。
《小学館「中日/日中辞典」》
於是我又著手翻弄第三本詞典,並不是完全不能用,只是部分顯示的字會是亂碼:
[11:14:57.441757][INFO][libeburc] Character Code: JIS X 0208 + GB 2312
[11:14:57.441924][INFO][libeburc] Number of Subbooks: 1
[11:14:57.442062][INFO][libeburc]
[11:14:57.774293][INFO][libeburc] Subbook 0:
[11:14:57.774434][INFO][libeburc] Directory: ZHONG_RI
[11:14:57.774518][INFO][libeburc] Title: 小学館「中日/日中辞典」統合版
[11:14:57.809140][INFO][libeburc] Search methods: word endword multi
[11:14:57.826945][INFO][libeburc] Font sizes: 16
[11:14:57.827082][INFO][libeburc] Narrow char range: 0xA421 - 0xA664
[11:14:57.858969][INFO][libeburc] Wide char range: 0xA121 - 0xA242
[11:14:58.211329][INFO][libeburc] Search "水田" hits 2 result(s)
[11:14:58.211497][INFO][libeburc] Heading: { Page: 44824, Offset: 692 }
[11:14:58.211569][INFO][libeburc] Text: { Page: 23485, Offset: 1126 }
[11:14:58.335793][INFO][libeburc] Text: すいでん<?><?>水田<?>
犠弥d<?>oti<?>n,邦弥shu<?>ti<?>n.¶畑を〜にする/個叉仇h<?>nd<?>葎w<?>i邦弥.¶〜土壌/(紗垢朔癖栽嶽邦犠議)邦弥輿叛t<?>r<?>ng.
[11:14:58.335936][INFO][libeburc] Text: { Page: 27229, Offset: 1796 }
[11:14:58.336009][INFO][libeburc] Heading: { Page: 44824, Offset: 718 }
[11:14:58.407651][INFO][libeburc] Text: みずた<?>水田<?>
邦弥shu<?>ti<?>n.
這種亂碼不是一般的亂碼,普通的亂碼應該是由頭亂到尾的,可以這個不一樣,感覺好像是混合編碼?
混合編碼是一種好麻煩的東西欸,GB2312 用的是 0x0000 - 0xFFFF ,EUC-JP 用的也是 0x0000 - 0xFFFF,這樣我很難判斷某個文字到底是 EUC-JP 還是 GB2312 嘛。
於是我東翻翻西翻翻,想著 GB2312 跟 EUC-JP 兩種編碼可以融合在一起嗎?理論上不可行吧?但 Character Code 卻強烈地表明著這是「JIS X 0208 + GB 2312」,也就是説有解碼的方式囉?
對 EBXA-C 的支援
在詞典的資料夾下面有一個叫做 ZHONG_RI.txt 的文件,上面劈頭就寫著:
# Name :ZHONG_RI.map
# Purpose :小学館日中・中日辞典(EBXA-C)用外字定義ファイル
# SONY電子ブックプレーヤー「小学館編中日/日中辞典統合版」『DD-CH10』添付品
# Author : hishida, wonthen
#
# 基礎知識:EBXA-Cは日本語部分はJIS X0208、簡体字にはGB2312が使用されている。
# それ以外に、異体字や繁体字のエンコードに独自の外字コードが使用されている。
# hXXXX - EB半角外字(A421~A664)
# zXXXX - EB全角外字(A121~A242)
# cXXXX - 0x1F1C~0x1F1Dタグの間に現れる外字
# gXXXX - GB2312の未使用領域にマッピングされた外字
# ※EBXA-Cでは下位バイトのみMSB1だが、ここでは上位下位バイトともMSB1で表現)
# ※GB2312の未使用領域は10区~15区だが、EBXA-Cでは4区~9区も独自外字に使用している
這 EBXA-C 是什麼啊?我 duckduckgo 了一下,發現在這則日文維基上這樣寫道:
EBXA-C
中国語対応の電子ブック(ソニーの電子ブックプレーヤーDD-CH10に付属する「小学館中日/日中辞典」のみ。このタイトルは文字と画像と音声を含む)
.
.
.
EBXA-Cは中国語に対応のため文字コードは特殊であり、日本語のJIS X 0208と、GB 2312をベースとした独自中国語文字コードを併用している。
還真做得出來啊?!
沒辦法,只好含著淚找找看這到底要怎麼解碼好了。
read_text_internal
接下來就是編程 talks 了,ebライブラリー 中的 readtext.c 有個 static EB_Error_Code eb_read_text_internal ,貌似所有讀取文字的功能都會通過這裏。搜了一下 2312 會意外地發現在好幾處對應 EXBA-C 的跡象。
而 else 下面有一句這樣的 comment:
/*
* The book is written in JIS X 0208 or JIS X 0208 + GB 2312.
*/
哦哦,好像找對地方了!嗯嗯,亂碼是因為原本就沒有 GB2312 <-> UTF8 的對照表啊,看起來是直接將 GB2312 的 CharCode 寫上去了。也就是説我得在此之前……嗯?這個有個叫 GB2312 的 hook ?這不是正就是對應這情況而寫的嗎?!
這裏如果直接寫 UTF8 上去好像不對呀,因為其它 function 是以 EUC-JP 寫上去的 ,最後才一次過將整個文字由 EUC-JP -> UTF8 ,如果這裏寫 UTF8 上去的話,後面的轉換就會錯了。
好吧,這邊找到解決方法了,接下來是第二個問題。
索引加速
很多時候載入詞典後發現用不了,是因為詞典在編製時啟用了「索引加速」,這功能是一個迷,一旦啟用 eblibrary 就會搜不了字。現時的解決方法就是到 ebstudio 下載 ebshrink ( 就是 ebwin 主體的其中一個工具 ),重新編制取消掉加速。
説實話這個還需要研究一下。 斟酌 鵬兄
Wed Oct 05 2016 04:30:51 GMT+0000 (Coordinated Universal Time)
Last modified: Wed Oct 05 2016 06:27:15 GMT+0000 (Coordinated Universal Time)