Namazu-devel-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC]${uri}の拡張
寺西です。
Yukio USUDA wrote:
>
> NMZ.field.uriの話題になにかコメントしようと思い、
> ヒントになるかなと現状のmknmzがファイルシステムsjis(Windows環境)
> の時に2バイト文字のuriエンコードをする動作を見ていて疑問に思いま
> した。
えっとですね。これは UNIX を基本で、Win32 環境はそこにちょっと
手を加えて動かすようにしたという経緯があるからです。
> "-U"付の場合はcgiで生成するページの文字コードとの整合をとる必要があ
> るのでeucにしているとして
>
> "-U"なしのときのNMZ.field.uriは"%82%C8"となるほうがよいのではないか
> と思うのですがどうでしょうか?
Win32 版では "-U"なしでは漢字の uri にアクセスできないのです。
なぜできないのかは臼田さんが指摘しているようにコードが違うからです。
そんなわけで、"-U"付きで mknmz を実行しましょうというのが、Win32 向け
の回答になっています。
> 現状の"-U"なしでのNMZ.field.uriが正しく機能するのは
> MS-Winローカルでインデックスを作っておきファイルシステムにEUCを用
> いているhttpサーバーにファイルとインデックスを転送した場合
> というケースかと思います。
ある特殊な環境では使えますが、普通は "-U"付きは使えないと思って
ください。
> MS-Win上でhttpサーバ(04Webserver, AN HTTPD という2種を試してみました)
> を動かしてみたところ
> %A4%CA.txt(EUC) %82%C8.txt(SJIS) %e3%81%aa.txt(utf-8)とどの文字
> コードをuriエンコードしたものでアクセスしてもちゃんと表示できました。
> httpサーバのlogには"な.txt"へのアクセスしか残っていないのでブラウザ
> かサーバで判断して変換しているようです。すごいですね。
全部が全部ってことはないと思いますよ。まじめに調べたことはないけど。
Webブラウザ依存、Webサーバ依存であることは確かだと思います。
> と想像していた通りの動作をしているので
> Windowsの2例のhttpサーバーではhttpサーバー側で文字コードを判断して
> 変換して対応しているようだがhttpサーバによってはファイルシステム上の
> 文字コードをeucにせずそのままuriエンコードしておいたほうがよいのでは
> と考えました。
というような問題を回避するため、すべてデコードした eucJP で記録して、
表示の時はそのまま(必要に応じて漢字コードを変換)、リンク先はサーバの
漢字コードに変換後、uriエンコードしたものを使うということに
しましょう。と、いう話をしているわけです。
特殊な文字に関しては変換して、逆変換しても戻らなかったりするので、
問題がないわけではないのですが、これだと、インデックスを作成した
環境と、実際にインデックスを使って検索する環境が異なっても、
同じ動作することになります。
現状は Win32 で作ったインデックスを Linux に持ってきてもダメなん
ですよ。
--
=====================================================================
寺西 忠勝(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