in reply to Re^4: CGI.pm: automatically decode param()
in thread CGI.pm: automatically decode param()

Watch out for file upload fields: if you utf-encode $q->param('upload'), you'll mangle the underlying filehandle. I use an override that's pretty much the same as yours, except that I added the following check:
sub param { my $self = shift; if (@_ == 1){ my @val = $self->SUPER::param(@_); @val = map { maybe_decode( $_ ) } @val; # rest of your param() } sub maybe_decode { my $p = shift; return ( !$p || ( ref $p && fileno($p) ) ) ? $p : encode('utf8', $p); }