################################### package main; ################################### sub decode_string { my $string = shift; Encode::_utf8_off($string); my $encoding = Encode::Guess->guess($string); if (!ref($encoding)) { $string = Encode::decode_utf8($string, 1); }else{ $string = $encoding->decode($string) if $encoding; } return $string; } CGI::param($_, map { decode_string($_) } (CGI::param($_)) ) foreach CGI::param; ##################################### package My::DBI; ##################################### sub fixutfflag { my $self = shift; do { Encode::_utf8_on($_); } foreach @{$self}{$self->columns}; } ##################################### package My::DBI::Class; ##################################### __PACKAGE__->add_trigger( select => sub { my $self = shift; $self->fixutfflag; });