あとcgi.rbのCGI::escapeって変だった記憶が。
スペースを+に変換するのはquery部分だけにすべきだと思うんだけど、
URI全体で無条件にやってくれちゃってた。

今のものの動作は知らないけど、まだおかしいようなら誰かバグレポしておいて。