[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[webdav-jp:0272] Re: Another question [Re: Re: 対 MacOs9,MacOsX の文字化けについて ]



 吉山です。

> From: Kunio Miyamoto [mailto:wakatono@xxxxxxxxxx]
> Sent: Saturday, March 02, 2002 10:34 PM
>
>  みやもとです。
>
> > site=pcweb&pcweb=pc-2&size=mini2.files
> > というファイル名のファイルがあると,WindowsのWebフォルダから
> > アクセス不能になるというのはFAQもしくは既知の問題でしょうか?
> > #でも,Webフォルダに入ってるってことは,放り込むことは
> > #可能だったってことか...ディレクトリの中にあるから
> > #表示しなければオッケーなのかな...
>
>  & というキャラクタについて、mod_dav の中での扱いが特別なので
> 起きてる現象だった気がします。

 そうです。
 昔別MLで私が書いた投稿より転送します。

---
NEC OSSソリューションセンター  吉山あきら
mailto:a-yoshiyama@xxxxxxxxxxxxx
http://www.sw.nec.co.jp/special/linux/

---

 mod_dav は & を '&' として返しているようです。困ったことに、これを
受けたIEが正しく処理できないようです。どちらが仕様を満たしていないのか
は不明です。
 mod-dav のソースに下記の変更を行うことで解決しました。

--- dav_util.c.orig	Mon Dec 17 11:10:20 2001
+++ dav_util.c	Mon Dec 17 11:19:12 2001
@@ -595,7 +595,7 @@
 	if (c == '<' || c == '>')
 	    extra += 3;		/* &lt; or &gt; */
 	else if (c == '&')
-	    extra += 4;		/* &amp; */
+	    extra += 2;		/* &amp; */
 	else if (quotes && c == '"')
 	    extra += 5;		/* &quot; */
     }
@@ -619,11 +619,16 @@
 	    *qscan++ = ';';
 	}
 	else if (c == '&') {
+	/*
 	    *qscan++ = '&';
 	    *qscan++ = 'a';
 	    *qscan++ = 'm';
 	    *qscan++ = 'p';
 	    *qscan++ = ';';
+	*/
+	    *qscan++ = '%';
+	    *qscan++ = '2';
+	    *qscan++ = '6';
 	}
 	else if (quotes && c == '"') {
 	    *qscan++ = '&';