sub init { my $q = CGI->new; for my $param ($q->param) { if ($param =~ /^(.+)$/) { $Params::vars{$1} .= fix_utf($q->param($param)); } } $q->delete_all(); } sub fix_utf { my $par = shift; my $res = ''; # decode obtained value to utf8 string if needed $res = Encode::decode_utf8($par) if !Encode::is_utf8($par); print STDERR "value: '$par'\n" "\tflg1: \t", Encode::is_utf8($par) ? 1 : 0, "\n", "\tflg2: \t", Encode::is_utf8($res) ? 1 : 0, "\n"; # # set utf8 flag if previous operation failed # Encode::_utf8_on($res) if !Encode::is_utf8($res); # print STDERR "\tflg3: \t", Encode::is_utf8($res) ? 1 : 0, "\n"; return $res; }