From: Tanaka Akira Date: 2009-09-09T18:06:25+09:00 Subject: [ruby-dev:39273] Re: Is URI.decode() broken? In article <20090909170937.0D01.A69D9226@jp.fujitsu.com>, KOSAKI Motohiro writes: > SPを+に変換するのはMOSAICから始まる由緒正しい変換で、ありとあらゆる > ブラウザ(*)が採用しているんですが、なぜかURLエンコーディングからは > 長年漏れていたんですよね。 > > (*) ちょっといいすぎか。でも、MOSAIC, Netscape, IEはMOSAIC由来の > + 変換コードをもってた SP を + に変換するのは昔から HTML で定義されています。 http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1 これは、URI が + という文字の意味を各スキームに任せていて、 http はそれをさらに web application やブラウザに任せていて、 HTML で form を application/x-www-form-urlencoded で submit する query のところにおける + に SP という意味を定義した、と いうことです。 > で、同じブラウザ内でもスクリプトエンジンとかは規格通りにencodeURI()を > 実装するから、どのサブシステムがエンコードする箇所によって結果が > 変わっていて、かつ、どこにも文書化されてないし、ブラウザ間の非互換もないから > Webで記事もみつからないしで、場合によってははまるケースがあったという・・ application/x-www-form-urlencoded じゃないところで + を使っ ても SP の意味にはならないので、そのへんにはまったんじゃない ですかね。 たとえば、 http://ja.wikipedia.org/wiki/+ は「プラス記号とマイナス記号」という記事が出てきます。 また、Apache でも、空白を含むファイル名をつくってアクセスし てみると確認できますが、URL に空白 (%20) のかわりに + を使っ てもアクセスはできません。 -- [田中 哲][たなか あきら][Tanaka Akira]