From: GOTOU Yuuzou Date: 2004-07-27T20:26:54+09:00 Subject: [ruby-dev:23981] Re: WEBrick::HTTPUtils.escape and URI.escape In message <87iscb6m8e.fsf@serein.a02.aist.go.jp>, `Tanaka Akira ' wrote: > In article <20040726.145658.35017253.gotoyuzo@sawara.does.notwork.org>, > GOTOU Yuuzou writes: > > いずれにせよ、queryで";"や"&"を値として送る時は個別にエスケー > > プしなければいけませんから、ここでは"?"をエスケープしたほう > > がいいような気がします。"#"はエスケープしてますし。 > > ふむ。 > > URI.escape では、 > http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=URI に (snip) > という例があって、? はエスケープしない仕様らしいのですが、 > WEBrick::HTTPUtils.escape は別の仕様にするということですかね。 そういうことになるのですが、そもそも何に使うのかという話です よね。WEBrick::HTTPUtilsを書いた時にはescape_formが念頭にあっ て、escapeはURI.escapeの仕様を真似て作ったような気がします。 path部分のエスケープには使えると思っていたのですが、"?"の例 で明らかになったようにそうではありませんでしたね。 > > - reserved = ';/?:@&=+$,' > > + reserved = ';/:@&=+$,' > > > - delims = '<>#%"' > > + delims = '<>#%"?' > > うぅむ。これは RFC 2396 と対応しなくなっちゃいますねぇ。 > > これはどうも本質的な処置という気がしません。reserved の他の文字でも同 > じ原理の問題が起こるのではなかろうかというか。 たしかに。 しかし、よくよく考えてみると、このへんはuriライブラリがまだ 標準添付ではなかった時代のいわば残骸なので、積極的にURI.escape (とURI::REGEXP::PATTERN)を使うべきだという気がして来ました。 うーむ、まずはURI.escapeの第2引数を活用してちゃんとエスケー プしつつURIを組み立てる方法を考えた方がいいですかねえ。 -- ごとうゆうぞう