On Wed, 15 Oct 2008 17:11:34 +0200 Rhesa Rozendaal <[EMAIL PROTECTED]> wrote:
> Mike Tonks wrote: > > Hi All, > > > > I recently encountered the dreaded utf8 funny characters, again. This > > time on the input data coming from form entry fields. > > > > It's CGI.pm that actually does the processing, and needs to read the > > stream as utf8. There is a flag for this, but I couldn't get that to > > work, so as a temporary measure I read all the parameters and pass > > them through decode_utf8. Does anyone have a better method? > > Here's what I use: > > package CGI::as_utf; > > BEGIN > { > use strict; > use warnings; > use CGI; > use Encode; > > { > no warnings 'redefine'; > my $param_org = \&CGI::param; > > my $might_decode = sub { > my $p = shift; > return ( !$p || ( ref $p && fileno($p) ) ) > ? $p > : eval { decode_utf8($p) } || $p; > }; > > *CGI::param = sub { > my $q = $_[0]; # assume object calls always > my $p = $_[1]; > > goto &$param_org if scalar @_ != 2; > > return wantarray > ? map { $might_decode->($_) } $q->$param_org($p) > : $might_decode->( $q->$param_org($p) ); > } > } > } > > 1; > > This does the right thing for file uploads, as well as handling scalar and > list context. That looks useful, Rhesa. Is there a variation of it that makes sense to submit as patch for CGI.pm? Mark ##### CGI::Application community mailing list ################ ## ## ## To unsubscribe, or change your message delivery options, ## ## visit: http://www.erlbaum.net/mailman/listinfo/cgiapp ## ## ## ## Web archive: http://www.erlbaum.net/pipermail/cgiapp/ ## ## Wiki: http://cgiapp.erlbaum.net/ ## ## ## ################################################################