Namazu-devel-ja(旧)


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

Re: WebDAVサーバの検索



寺西です。

Kenji Suzuki wrote:
> 
> Apache + mod_dav + mod_encoding という組合せで、文字コード(文書の
> 文字コードではなくファイル名の)は、UTF-8 というのが多分多いかと
> 思いますが、現状の Namazu は UTF-8 のファイル名をうまく扱えません
> (あってますよね?)。

はい。UTF-8 のファイル名は考慮していません。
 
> 1. nkf 2.02 で UTF-8ファイル名(が title になる場合)を無理矢理 EUC
>    に変換
> 2. 表示用の uri field を新設(<a href="A">B</a> の A と B を分離)、
>    表示用の uri(B)は、url decode をかけ、nkf で EUC に変換
> 
> という ad hoc なものでしたが、どういう方法がいいでしょうか?

それで良いのではないかと思います。ファイル名が Shift_JIS の時も
同様な対処をしているはずですから。

1. に関しては pl/gfilter.pl の filename_to_title 辺りで nkf を
通しているものと思います。
現状では、Windows 環境の場合、Shitf_JIS から EUC に変換しています
が、より一般化して全て toeuc を通すようにしても良いかもしれませんね。

ただし、短いファイル名の場合、nkf の文字コード自動認識では誤認する
可能性もないわけではないので、何らかの工夫も必要なのかもしれません。

2. に関してはファイル名が Shift-JIS の際でもうまく動いているはずな
ので、何もしなくてもよさそうに思いますが、どうもそうではないという
ことですね。
ということは、潜在的なバグがあるとかかもしれません。
よろしければ、もう少し状況を説明していただければ、助かります。

デフォルトで nmz_decode_uri を通るような気がしますが、decode した
ものは UTF-8 なので、不具合が生じるということですね。おそらく。

ソースを追うと、src/result.c compose_result を通った後に
nmz_codeconv_external を通るので、compose_result では EUC コード
で出力しなければならないはずですね。

そういうことなら、ファイル名が Shift_JIS で、出力コードを EUC に
した場合に現状の Namazu では不具合が生じるのではないかと思います
が、正常に動作するのでしょうか? -> 皆様
(ファイル名が Shift_JIS で、出力コードが Shift_JIS の場合は、
問題が生じないので、気づいていないだけではないかと思います。)

また、表示用は decode して、表示言語に変換する必要がありますし、
リンク用はそのまま(decode せずに、文字コードも変換しない)に
しなければならないはずですね。
でも、現状の Namazu ではそれを区別していません。

何らかの区別をつける必要はありますが、
内部処理で ${uri} を decode + コード変換 するのと、しないのを
区別するのは、テンプレートを様々に書き換えた場合に何かと問題が
生じるように思います。
 
${uri} とすると decode + コード変換、${uri::nodecode,nocodeconv}
や ${uri#nodecode,nocodeconv} のようなオプションをつけて、
decode も コード変換もしないようにするというような仕様変更は
いかがでしょう? --> 皆様

将来的には他の ${xxx} にもオプションをつけることができるようにも
できますし。
=====================================================================
余談です。

nkf202 以降がインストールされている場合は、
nmz/codeconv.c nmz_codeconv_external 辺りを書き換えて
出力コードに ja_JP.utf8 が選択できるようにそろそろしたいですね。
(できれば、Perl 5.8 以降にも対応したいところですが...。)
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns@xxxxxxxxxxxxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E