From: GOTOU Yuuzou Date: 2004-07-26T14:56:58+09:00 Subject: [ruby-dev:23968] Re: WEBrick::HTTPUtils.escape and URI.escape In message <87oem379f2.fsf@serein.a02.aist.go.jp>, `Tanaka Akira ' wrote: > ついでに尋ねますが、WEBrick::HTTPUtils.escape か URI.escape で、 > "http://www.rubyist.net/~akr/question%3Fmark" という文字列を返させるこ > とはできるでしょうか? なるほど、できませんね。 いずれにせよ、queryで";"や"&"を値として送る時は個別にエスケー プしなければいけませんから、ここでは"?"をエスケープしたほう がいいような気がします。"#"はエスケープしてますし。 webrickのほうは例えばこんな感じですかねえ。 Index: lib/webrick/httputils.rb =================================================================== RCS file: /var/cvs/src/ruby/lib/webrick/httputils.rb,v retrieving revision 1.5 diff -u -p -F^[^A-Za-z0-9_+-]*\(class\|module\|def\)[^A-Za-z0-9_+-] -4 -r1.5 httputils.rb --- lib/webrick/httputils.rb 26 Jul 2004 02:50:04 -0000 1.5 +++ lib/webrick/httputils.rb 26 Jul 2004 03:46:52 -0000 @@ -322,17 +322,17 @@ def parse_form_data(io, boundary) module_function :parse_form_data ##### - reserved = ';/?:@&=+$,' + reserved = ';/:@&=+$,' num = '0123456789' lowalpha = 'abcdefghijklmnopqrstuvwxyz' upalpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' mark = '-_.!~*\'()' unreserved = num + lowalpha + upalpha + mark control = (0x0..0x1f).collect{|c| c.chr }.join + "\x7f" space = " " - delims = '<>#%"' + delims = '<>#%"?' unwise = '{}|\\^[]`' nonascii = (0x80..0xff).collect{|c| c.chr }.join def _make_regex(str) /([#{Regexp.escape(str)}])/n end -- ごとうゆうぞう