Namazu-devel-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC]${uri}の拡張
- From: Yukio USUDA <m6694ha392t@xxxxxxxxxxxxxxx>
- Date: Sun, 28 Dec 2003 09:36:07 +0900
- X-ml-name: namazu-devel-ja
- X-mail-count: 03494
- References: <3FED66D5.7D9CF774@asahi-net.or.jp>
臼田です
Tadamasa Teranishi wrote:
> > というような問題を回避するため、すべてデコードした eucJP で記録して、
> > 表示の時はそのまま(必要に応じて漢字コードを変換)、リンク先はサーバの
> > 漢字コードに変換後、uriエンコードしたものを使うということに
> > しましょう。と、いう話をしているわけです。
> 現状は Win32 で作ったインデックスを Linux に持ってきても OK です。
> こうしたいので、ちょっと変則的な uriエンコードになっているとも
> 言えます。
>
> で、eucJP に変換せずに元のまま uri エンコードしたものを使うと、
> ダメなんです。インデックス作成環境依存になってしまうため。
>
> たまたま動いている UTF-8 の場合は、インデックスを作成する環境と
> 検索する環境が共に UTF-8 じゃないとダメです。
ようやくわかってきました。
1.マルチバイトURIの検索を行えるようにするためにインデックスと同じ文字
コード(現状はeuc-jp)での保存がしたい。これによりuri表示の可読性も
高まる。
2.元文書へのリンクの到達を保証するためにはuriエンコードが不可欠
(現在はこれがNMZ.field.uriに使用されている)
3.インデックス作成後にインデックスと文書ファイルを文字コードの異なる
サーバーに転送しても動作することを保証するためにはuriエンコードは
インデックス作成環境の文字コードから作成したものでは十分でない。
3.については全く考えていなかったので一度eucに統一してしまう際に変換が不
可逆な文字を含むuriに影響があるのではと思っていました。
できるだけ元の文字コードをuriエンコードしたものを保存しておいて使うのが
よいので、下記のような感じにするとよいのではと思っていました。
1.を満たすために
NMZ.field.duriをeuc-jpで作成し
2.を満たすために
NMZ.field.uriをインデックス作成環境の文字コードでuriエンコードしたものを
つけておく
NMZ.result.normal.jaは namazu-users-ja#676にあった
<dd><a href="${uri}">${duri}</a> (${size} バイト)<br><br>
とする。
3.は面倒ですね
mknmzのオプションに
"インデックス作成環境のファイルシステム文字コード"と
"namazu.cgi実行環境のファイルシステム文字コード"を与えてuriエンコード
前の文字コードはインデックス作成時に決め打ちしておくのかな?
指定がなければ インデックス作成環境=namazu.cgi動作環境 ということに
する。
これだとNMZ.field.uriが二重になりますね。
Samba,WebDAV等でファイルを行き来させたときに不可逆な文字コード変換がないの
(仕様として無視できる範囲)であればeuc(もしくはutf-8ですか)に統一してし
まう案のほうがNMZ.field.uriを2重化させなくてすむのでよいと思います。
namazuにしっかりした文字コード変換機能がついたほうがよいのでいわきりさんの
実装で実現されるのを期待しています。
余談ですが
NMZ.rという元の文字コードのままのファイル名が入っているファイルもあり、
作業log以外に使われていないので有効活用する方法はないですかね。
臼田幸生