namazu-ml(avocado)


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

Re: Trouble of indexing on winNT



mithara <mithara@xxxxxxxxxxxxxxxx> wrote:

>4.ディレクトリjaを「日本語」、その下位ファイルを日本語(「マニュアル」、
>「リンクス」、「紹介」、「よくある質問」)に変換、enを「英語」にした、コ
>マンドラインで同様に検索したが正常に表示した。

ここまではうまくいくわけですね。必ずしも日本語のファイルが扱えない
わけではないと。



>5.その他のディレクトリ(下位に複数の日本語ディレクトリがある)をインデッ
>クス化して、コマンドラインから namazu "**"と適当なワードを入力して検索
>し、結果をファイルに保存すると、インデックス作成時の一番めのディレクトリ
>に関しては、タイトル、抄録、ファイル名も正常表示。それ以外は、英語ファイル
>名はOKだが、日本語ファイル名、抄録は文字化けとなっている。

リンクの部分に含まれる安全でない文字は %8C%72%90%FC のように
エンコードされます。

コマンドラインから実行したときは検索結果のリンクの部分を自動的にデ
コードして出力するので、たとえば "%8C%72%90%FC.txt" を "罫線.txt"
に置き換えて表示します。

sub url_decchiagator() というサブルーチンの中に

|    if (($SYSTEM eq "WIN32") || ($SYSTEM eq "OS2")) {
|	$url =~ s|\\|/|g;          # \ を / に

という処理がありますが、ここは Shift_JIS を考慮して

|    if (($SYSTEM eq "WIN32") || ($SYSTEM eq "OS2")) {
|	# Shift_JIS の漢字の 1 byte目を保護 [09/23/1998]
|	$url =~ s|([\x00-\x7f])\\|$1/|g;          # \ を / に

にすべきです。以前のものだと \ を / に変換するときに 2 byteの文字
を破壊してしまうことがあります。修正してみてください。これが原因か
もしれません。

namazuに -U オプションをつけるとリンクのデコードを行わずにそのまま
出力されます。たとえば "/namazu/doc/日本語/マニュアル.html" はファ
イル名が Shift_JISの場合は

/namazu/doc/%93%FA%96%7B%8C%EA/%83%7D%83j%83%85%83A%83%8B.html

ちなみに EUC-JP の場合は

/namazu/doc/%C6%FC%CB%DC%B8%EC/%A5%DE%A5%CB%A5%E5%A5%A2%A5%EB.html

UTF-8 の場合は

/namazu/doc/%E6%97%A5%E6%9C%AC%E8%AA%9E/%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB.html

のようになります。

たぶん NTでも互換性を重視して日本語のファイル名の扱いは Shift_JIS
で行っている (内部処理は別かもしれないが) と思うのだけど、その辺を
はっきりさせたいところです。調べてみてもらえませんか?


また、インデックス作成の対象としたファイルの中に .txt という拡張子
のついたものがありませんか? テキストファイルの場合は sub
filename_to_title() というサブルーチンを通してファイル名を要約用に
タイトルとして設定しているのですが、この処理は日本語を考慮していな
いので問題が起こり得ます。


>日本語コードのカオスに迷い込んだ気がします。だんだん素人には手におえない
>世界になってきたような、、、。

原因は案外単純だったりするものです。 NMZ.r に登録済のファイルの一
覧が載っているのでこの内容を送ってもらえると何かわかるかもしれませ
ん。


>「こんなに速くてイインデックスか?」「イインデックス!」なんて駄洒落を
><私が>言える日がくるのでしょうか?

来て欲しいような来て欲しくないような :-)。

# 私の手元の環境では日本語のファイルを扱うことがないのでいまいち状
# 況が掴めなかったりします。

-- Satoru Takabayashi