From: "NARUSE, Yui" Date: 2009-02-15T15:01:54+09:00 Subject: [ruby-dev:38017] Re: Is URI.decode() broken? 成瀬です。 Fujioka wrote: > 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にしていません。 URI の percent-encode は通常 UTF-8 ですから。 とりあえずなんでもかんでも percent-encode してくる CGI とは、 若干事情が異なるかなと思います。 しかし、ちょっと試して気付いたんですが、 > URI.escape("http://exmaple.com/foo bar?a=b=c;d=e#hoge#fuga") => "http://exmaple.com/foo%20bar?a=b=c;d=e%23hoge%23fuga" この # ってエスケープしちゃっていいんですかねぇ。 -- NARUSE, Yui