xibbarこと藤岡です。

>>> $ 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}\""]
>> UTF-8決め打ちはまずいと思いますが、こういう場合って
>> default_externalでいいんでしょうか。
> 
> 基本的には引数のエンコーディングがいいのですかねぇ。

こちらは同意ですが、

> で、US-ASCII だった場合は UTF-8 で。
> 
こちらは初耳です。
cgi.rbの方は引数にしているのですが、
US-ASCIIの場合はUTF-8にしていません。