CGI::Cookie.parseの改良
CGI::unescapeが引数にencodingをとれるようになりましたので、
cookieのparseで使うように実装してコミットしました。
fujioka@dhcp160:~/build/ruby19% irb -rcgi irb(main):001:0> cookie = CGI::Cookie.parse("name1=val1&%26%3C%3E%22&%E6%9D%BE%E6%B1%9F; path=") => {"name1"=>["val1", "&<>\"", "松江"], "path"=>[]} irb(main):002:0> cookie["name1"].map(&:encoding) => [#<Encoding:UTF-8>, #<Encoding:UTF-8>, #<Encoding:UTF-8>] irb(main):003:0> cookie["name1"].map => #<Enumerator: ["val1", "&<>\"", "松江"]:map>
CookieのASCII文字列を分解し、クラス変数の
@@accept_charsetのエンコーディングに変換しようとします。
変換できない場合は諦めます。
@@accept_charsetは
CGI.accept_charset="EUC-JP"
などでも変更できますが、しょっちゅう変更するようなものではありません。