Net::HTTP::Getがおかしい?
WWW::Mechanizeを使って以下のようにやると
require 'rubygems' require 'mechanize' require 'uri' require 'logger' agent = WWW::Mechanize.new { |a| a.log = Logger.new("/tmp/mech.log") } agent.user_agent_alias = 'Windows IE 6' str = 'あ' url = 'http://example.com/?foo=' + URI.escape(str) agent.get(url)
こうすると http://example.com/?foo=%E3%81%82 っていうリクエストが来るべきなんですが http://example.com/?foo=%E3 っていうリクエストがきます。なぜか「%81%82」がどこかに消えてしまいます。
/tmp/mech.logにログが残るのですが、それを見ても Net::HTTP::GET で
I, [2007-11-20T19:43:17.776953 #50422] INFO -- : Net::HTTP::Get: /?foo=%E3
ってログしかのこってません。「%81%82」はどこいったの!?
ちなみに、urlのところを
url = 'http://example.com/?foo=' + URI.escape(str) + '&bar=1'
と後ろにもう1つクエリをつなげてやると普通にリクエストの投げてくれます。
どこのバグなんだろう…。
まだ深追いする能力がない。
ゆっくり深追いしてみる。