関係各位、
お世話になっております。
text::kakasiにてkakasiのライブラリ処理内にて
不具合が発生していましたので、報告させていただきます。
【動作環境】
OS :AIX 5.3
perl :5.8.2
kakasi :2.3.4
text::kakasi :2.04
itaijidict :kakasiのデフォルト辞書
kanwadict :kakasiのデフォルト辞書
LANG :ja_JP.SJIS(AIXのデフォルトJa_JPから変更)
【使用用途】
namazuにてtext::kakasiを使用した分かち書きをしたい。
【現象】
kakasiコマンドとtext::kakasiにて"引越を考えています。"を分かち書きすると
以下のような差異がでました。
・kakasi(パラメータ:-isjis -osjis -w)
"引越 を 考え ています 。"
・text::kakasi(パラメータ:-isjis -osjis -w)
"引 越 を 考え ています 。"
kanwadictには"引越"が存在するのですが、text::kakasiではうまく処理されません
でした。
また、Windows環境で動作した場合にはtext::kakasiでもkakasiコマンドと
同じ結果が返されました。
AIX特有の現象かもしれません。
【原因】
ライブラリ化されたitaiji.cソース内のmkitaijitbl関数にて
kakasiコマンドとの実行結果に相違がありました。
64行目から
while(fgets(buffer, BUFSIZE, fp) != NULL) {
/* デバッグ用に追加 */fprintf(stderr, "%s", buffer);
sscanf(buffer, "%1c%1c%1c%1c", &n1, &n2, &o1, &o2);
n1 &= 0x7f;
n2 &= 0x7f;
ittbl1[n1][n2] = o1;
ittbl2[n1][n2] = o2;
/* デバッグ用に追加 */fprintf(stderr, "mkitaijitbl::changeAfter::n1(%d):n2(%
d):o1(%d):o2(%d)\n", n1, n2, o1, o2);
}
kakasiコマンドにて実行(パラメータ -isjis -osjis -w )
芦蘆
mkitaijitbl::changeAfter::n1(176):n2(178):o1(233):o2(195)
壱一
mkitaijitbl::changeAfter::n1(176):n2(237):o1(176):o2(236)
苅刈
mkitaijitbl::changeAfter::n1(180):n2(163):o1(180):o2(162)
舘館
mkitaijitbl::changeAfter::n1(180):n2(220):o1(180):o2(219)
曽曾
mkitaijitbl::changeAfter::n1(193):n2(190):o1(193):o2(189)
・
・
・
perlよりtext::kakasiを実行(パラメータ -isjis -osjis -w )
芦蘆
mkitaijitbl::changeAfter::n1(176):n2(178):o1(233):o2(10)
壱一
mkitaijitbl::changeAfter::n1(176):n2(250):o1(204):o2(10)
苅刈
mkitaijitbl::changeAfter::n1(180):n2(163):o1(180):o2(162)
舘館
mkitaijitbl::changeAfter::n1(180):n2(220):o1(180):o2(219)
曽曾
mkitaijitbl::changeAfter::n1(193):n2(190):o1(193):o2(189)
・
・
・
上記結果よりbufferには正しくitaijidictのレコードが取り出されているのですが、
sscanfにて1文字づつ分けた結果が異なっております。
【対処】
sscanf(buffer, "%1c%1c%1c%1c", &n1, &n2, &o1, &o2);
を
n1 = buffer[0];
n2 = buffer[1];
o1 = buffer[2];
o2 = buffer[3];
に変更したところ、text::kakasiでも正常に分かち書き出来るようになりました。
何故コマンドラインとperlからのコールにて差異が出るのかは
納得できていませんが、何かの役に立てればと思い、取り合えず
ご報告させていただきます。
以上
_______________________________________________
Kakasi-dev mailing list
[email protected]
http://www.namazu.org/cgi-bin/mailman/listinfo/kakasi-dev