Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [namazu-users-ja] 「海」で検索すると文字化け



 From: Rei FURUKAWA <furukawa@xxxxxxxxxxxx>
 Subject: [namazu-devel-ja] Re: [namazu-users-ja] 「海」で検索すると文字化け
 Date: Mon, 02 Jul 2001 21:49:48 +0900

 > _nmz_lower() ではなくて、strcasestr 自体が 2 バイト文字に対応し
 > ていないのが原因だと思います。
 > 
 > 2 バイト文字だったら、次の 1 バイトとペアで比較して、ポインタも
 > 2 つ進めないといけないですよね。

やはりそうですよね。


 > 直すこと自体は簡単ですが、locale なども考慮して、処理を切り替え
 > ないといけないですよね?そこらへんで、どういうスタイルで直すべ
 > きか、が私には判断できないです。

strcasestr() は、すでにそういう機能を持っている関数として他のソフ
トウェア(wu-ftpd とか w3m とか、他にも特定の OS のライブラリにもあ
るのですか?)でも使われている以上、そのままの名前で勝手に場合分けす
るのはやっぱりあまり良くないようにもおもえます。

nmz_strcasestr() などと名前を変えて src/result.c から nmz/ 以下の
どっかのファイル(nmz/util.c とか) に分離・移動する方がいいかもしれ
ません。実際に、だいぶ以前はそうだったようです。
http://cvs.namazu.org/namazu/nmz/util.c#rev1.55 を見ればわかります。

nmz_strcasestr() の中では、当面は、nmz/{codeconv|re|search}.c とか
でやってるように、nmz_is_lang_ja() を使った場合分けをやるのがよさ
そうです。あるいは、

  http://cvs.namazu.org/namazu/nmz/util.c.diff?r1=1.54&r2=1.55

で削った nmz_strcasestr() そのままでもよさそうにおもえます。ちょっ
とほげって試してみましたが、(もう少しちゃんと調べる方がいいとはお
もいますが)、とりあえずきちんと動作するような感じです。
# http://cvs.namazu.org/namazu/src/result.c.diff?r1=1.52&r2=1.53
# もやるほうがいいのかな。

nmz/util.c から src/result.c に移した(2000-01-31) 経緯がもう少しわ
かればこれでもいいんですが、このあたりは、安部さんいかがですか? 
--
馬場  肇 ( Hajime BABA )                  E-mail: hajime.baba@xxxxxxxxx
国立天文台 天文学データ解析計算センター
--