in reply to CGI::Application - Which is the proper way of handling and outputting utf8
Usage is simple. Just add a use CGI::as_utf8; in your CGI::Application module(s). It's been battle-tested on a site that does about 7 million cgi hits per day, so it works in practice. Suggestions for improvements are welcome though!package CGI::as_utf8; BEGIN { use strict; use warnings; use CGI; use Encode; { no warnings 'redefine'; my $param_org = \&CGI::param; my $might_decode = sub { my $p = shift; # make sure upload() filehandles are not modified 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]; # setting a param goes through the original interface goto &$param_org if scalar @_ != 2; return wantarray ? map { $might_decode->($_) } $q->$param_org($p) : $might_decode->( $q->$param_org($p) ); } } } 1;
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: CGI::Application - Which is the proper way of handling and outputting utf8
by mrajcok (Initiate) on Mar 10, 2010 at 17:23 UTC | |
by ikegami (Patriarch) on Mar 11, 2010 at 02:32 UTC | |
by Anonymous Monk on Dec 14, 2010 at 10:01 UTC | |
by davebaker (Pilgrim) on Oct 29, 2020 at 20:52 UTC | |
by Anonymous Monk on Oct 30, 2020 at 00:12 UTC | |
| |
by ikegami (Patriarch) on Dec 15, 2010 at 23:52 UTC |