もろはしです。いつもお世話になっております。

Ruby 1.9.1p0で、URI.decode()がうまく動かないようです。
一文字ずつデコードされるため(?)、マルチバイト文字を復元できていません。

$ ruby19 -Ku -ruri -ve 'p ["日本語".dump, URI.unescape( URI.escape("日本語") ).dump]'
ruby 1.9.1p0 (2009-01-30 revision 21907) [i686-darwin9]
["\"\\u{65e5}\\u{672c}\\u{8a9e}\"",
"\"\\u{e6}\\u{97}\\u{a5}\\u{e6}\\u{9c}\\u{ac}\\u{e8}\\u{aa}\\u{9e}\""]

1.8.7ではきちんとデコードできています。

$ $ ruby -Ku -ruri -ve 'p ["日本語".dump, URI.unescape( URI.escape("日本語") ).dump]'
ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin9]
["\"\\346\\227\\245\\346\\234\\254\\350\\252\\236\"",
"\"\\346\\227\\245\\346\\234\\254\\350\\252\\236\""]