From: Fujioka Date: 2008-09-10T15:13:19+09:00 Subject: [ruby-dev:36244] Re: [Feature #542] cgi.rb : CGI::unescape return encoding 藤岡です。 >>> 成瀬さんとやり取りをした結果、やはりヘッダのcharsetを見て >>> そのencodingをつけてあげるのが筋だろうという話になりました。 >> ブラウザはここで利用できる charset をつけてくれるんでしょう >> か? > > application/x-www-form-urlencoded にはそもそも charset がありませんし、 > multipart/form-data にも charset が付いているのは見たことがないです。 > encoding情報はもらえないので、期待するしかないです。 だからといってASCII-8BITかUS-ASCIIのどちらでしか データを貰えないというのも面倒かなと思うのですが、 どうしたらいいと思いますか? ポストされたデータは 1.ASCII-8BIT でもらう(現状) 2.US-ASCII or ASCII-8BIT でもらう 3.期待するencodingを決めて、US-ASCII or 期待するencodingでもらう 4.上記3に加えて、encodingチェックをおこなって、encodingが間違っている 場合はnilなどを返す 1と2は日本語のCGIアプリの出力が面倒です。 @cgi=CGI.new したとして、ポストされたデータに日本語が入ってくると "タイトル:#{@cgi['title']}" これが例外です。 日本語文字列とASCII-8BITが連結できないためです。 これでは使いづらいなぁと思ってアイディアを模索している最中です。