In article <20090909170937.0D01.A69D9226 / jp.fujitsu.com>,
  KOSAKI Motohiro <kosaki.motohiro / jp.fujitsu.com> 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]