Namazu-devel-ja(旧)


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

Re: [RFC]${uri}の拡張



臼田です

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以外に使われていないので有効活用する方法はないですかね。

臼田幸生