Namazu-devel-ja(旧)


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

Re: UTF-8 index



臼田です。

> 寺西です。
> 
> Yukio USUDA wrote:
> > 
> > ファイル名の変換をshiftjis→euc(正規化つき)→uriエンコードしている
> > 手順に問題があるのですが
> > shiftjis→euc→uriエンコードとしてもeucにない文字が消滅したりするため
> > 結局完全な仕様とはなりません。
> > 
> > shiftjis→uriエンコードという変換のみにしておけばこの問題は根本
> > から解消されます。
> 
> それは UTF-8 化でとりあえず解決する話ですよね。
> (万能ではないにしろ、UTF-8 からは可逆変換可能ですから)
> 

UTF-8からの変換もCP932の問題で用心しないと厄介かと思います。


> > > では、$INDEXFIELD_FILESYS_CHARSETは廃止して、文字コード変換をせずに
> > > 元のバイナリコードのままuriエンコードすることにします。
> > > (という意味の統一ですよね)
> > >
> > と書いたのはこれのことです。
> 
> UTF-8 化により統一して扱いたいので、手を加えたいと書いています。


> > そのため表示用に別途NMZ.field.duriというのを設けてみました。
> > あるいは、元のバイナリコードからuriエンコードしたNMZ.field.uriを
> > namazu側で文字コード変換処理をして表示するのがよいと思います。
> 
> NMZ.field.uri に UTF-8 コード(エンコードもしない)で入れて、表示およ
> びリンク生成時に適当なものに変換することで目的は果たせます。
> 

・namazuでの表示ルーチンの書きやすさ
・uriアクセスの完全さの保証
・filed検索でのファイル名の探しやすさ
・namazu以外のクライアントがNMZ.field.uriを元のuriへアクセスする方法
 を簡易にしておく
といった点が選択基準だと思います。

NMZ.field.uri に UTF-8 コード(エンコードもしない)で入れるという案は
元の環境、もしくはインデックスの移転先の環境をどこかに
保存する必要がありますが、
1つ目と2つ目にはutf-8での統一でよいように思えます。
しかし、
3つ目にはファイル名も正規化されていたほうがよさそうですし
4つ目には元のバイナリコードのままuriエンコードされているのが
よさそうです。

アクセス用と表示用に2つfieldを作るのはやはり冗長でしょうか

> また、インデックスが euc-jp であっても一部の機種依存文字以外で
> あれば半角カナを含めて、上記の方法で十分に使えるはずです。
> 
utf-8には半角カナもあるのですが、nkfは半角カナを全角にしますね

> が、nkf を使ってしまうとダメなわけで、nkf を使わない変換が必要と
> なります。
shiftjis→eucは計算式で変換できますが
nkfなしでutf-8にしようと思うと厄介ですね。
nkfに新しいオプションをつけてもらうのですかね。

臼田幸生