大島です。

From: Wakou Aoyama <wakou / fsinet.or.jp>
Subject: [ruby-list:22877] Re: CGI::escape
Date: Wed, 24 May 2000 14:41:22 +0900

> On Wed, 24 May 2000 01:08:00 +0900,
> Ryunosuke Ohshima <ryu / jaist.ac.jp> wrote:
> 
> 大抵のというか、form field のエンコードに関する定義が RFC 1866 以降で
> 置き換えられていない限りは、そのようになります。

見落としていました。escape処理が必要なのは通信の際の処理なので、
RFC1866(HTML2.0)の方で定義されているとは思っていませんでした。

> とはいえ、二重に処理してしまっていたのは確かに問題でした。こんな感じで
> しょうかね。

はい。青山さんの方法で良いと思います。

> また、Cookie の方は () 忘れですね。これではまともに機能していませんでした。
> ありがとうございます。

こちらは僕も最初は() 忘れだと思ったのですが、Cokkie#to_s()での動作を
考えると、「@path = ""」より、「@path = nil」に初期化された方が良い
と思われます。

余談ですが、HTMLのタグのエレメントでも「&"<>」を含む場合は
CGI::escapeHTML()する必要があるのですね。当然と言われれば当然なので
すが、先ほどRFC1866の以下の部分を読むまで、気づきませんでした。
>             NOTE - The URI from a query form submission can be
>             used in a normal anchor style hyperlink.
>             Unfortunately, the use of the `&' character to
>             separate form fields interacts with its use in SGML
>             attribute values as an entity reference delimiter.
>             For example, the URI `http://host/?x=1&y=2' must be
>             written `<a href="http://host/?x=1&#38;y=2"' or `<a
>             href="http://host/?x=1&amp;y=2">'.
> 
>             HTTP server implementors, and in particular, CGI
>             implementors are encouraged to support the use of
>             `;' in place of `&' to save users the trouble of
>             escaping `&' characters this way.

大島 龍之介	ryu / jaist.ac.jp