Namazu-devel-ja(旧)


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

Re: WebDAVサーバの検索



寺西です。

# しまった。メーリングリストじゃなくて、個人宛に返事を送っていた。

Kenji Suzuki wrote:
> 
> > ${uri} 自体は mknmz で EUC コードになっていました。
> > ですので、decode すれば EUC コードが得られるので、ファイル名が
> > SHIFT_JIS であっても問題なかったということでした。
> 
> > # EUC 漢字の uri のリンクにアクセスすれば、ブラウザ(またはサーバ?)
> > # が、コードの変換をして SHIFT_JIS のファイル名のファイルに
> > # アクセスできるということなのかな。
> > # 漢字のファイル名なんて、使わないので知らないです。
> 
> 少なくとも Unix では、そんなことはないと思いますが。

ですよね。ミスしてました。

Windows 環境では、SHIFT_JIS のファイル名が、mknmz で
${uri} には EUC コードになります。これを出力漢字コードで
変換するので、結局 SHIFT_JIS に戻るということです。

> # Win32 では、現状、ホントに問題ないんでしょうか?

ですので、Windows で SHIFT_JIS という組み合わせなら問題ない
ということのようです。(半角カナは無視)

# Windows で EUC なら死ぬでしょうし、
# UNIX で SHIFT_JIS なら死ぬでしょう。
# まぁ、Windows 用に SHIFT_JIS 対応したのであって、きちんと
# SHIFT_JIS 対応しているわけではないということですね。

> > 今回はファイル名が UTF-8 だったので、mknmz では EUC に変換して
> > いないため、${uri} には UTF-8 のまま入っていたということが
> > 問題になったようです。
> 
> ${uri} に UTF-8 のまま URL encode したものが入っていたという
> ことは、クリックしてファイルにたどり着けるかという点では問題は
> ありません。URL encode したものがウェブ・ページに表示される
> ことが、人間が読めないという点で問題でした。

いや、${uri} は EUC でないと、他とのバランスが合わないんですよ。
(encode されている、されていないの違いはオプションで生じますが。)

> > 以上のことから、
> > mknmz の generate_uri 辺りに UTF-8 ならば、EUC に変換する処理を
> > 加えれば良いということのようです。
> 
> UTF-8 を EUC に変換されると、実際には UTF-8 な URL へのリンク先
> (ファイル)にたどり着けなくなると思いますが。

ということで、EUC から UTF-8 への変換を行う必要があるということです。
これは現在、出力漢字コードに UTF-8 をサポートしていないので、
現状の SHIFT_JIS のような扱いができないことを意味しています。
(SHIFT_JIS 指定の場合、内部は EUC コードで処理して、最後にまとめて
SHIFT_JIS に変換しています。)
また、出力漢字コードと、ファイルの漢字コードを区別できないという
問題にも関わってきます。

なので、表示用は強制的に decode するオプションを付けて、
リンク先は漢字コードを指定するオプションを付けるような

<a href="${uri decode}">${uri codingsystem=utf8 encode}</A>

こんな感じで指定できるようにすべきなのかもしれません。
# なんだかスマートじゃないけど。

ついでに修正ですが

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

と書きましたが、html モードでは decode は通りませんでしたね。
-- 
=====================================================================
寺西 忠勝(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