Perl の CGI.pmはよくお世話になりますが、UTF8を扱おうとすると、utf8フラグがたったり、なかったりと問題があるようで、めんどくさいのでCGI.pmでパラメータ受け取るときにすべてのパラメータを一度に処理してます。 1件ごとでなくて、飛んできたパラメータ全部をdecodeしてみる。 use CGI; for my $p ($CGI->param) { my @v = map {Encode:: decode_utf8 ($_)} $CGI->param($p); $CGI->param($p,@v); } たつをのChangeLog殿から、dankogai殿の指摘をみて、自分のコードも少々修正してみました。 たつをのChangeLog Perl の utf8 まわりのおまじない use utf8; use CGI; ... my $text = $q->param('text