gikoha’s blog

個人的メモがわり

CGI.pm utf8 bug

CGI.pm のparam()はらくちんなんだけれど %エスケープの展開で日本語が文字化けすることがある
たとえば「安全運転」は「%E5%AE%89%E5%85%A8%E9%81%8B%E8%BB%A2」なんだけれど、これはCGI.pmで展開できない

CGI.pm 内で行われているデコード方法に問題がある
CGI.pmとUTF8 flag
下記を追加したらなんとか読み込みでした

my $input = {map{$_, Encode::decode("utf8",param($_))}param()};
# $input->{'JAPANESE'} みたいにして使う