perl -MURI::Escape -le 'print uri_unescape("%C2%A3")'
£
perl -MCGI=param -le 'print param("q")' "q=%C2%A3"
£
####
plackup -e 'use URI::Escape; sub { [200, ["Content-Type" => "text/html; charset=utf-8"], [ uri_unescape("%C2%A3") ]]}'
HTTP::Server::PSGI: Accepting connections at http://0:5000/
--
£
####
plackup -e 'use Encode; use URI::Escape; sub { [200, ["Content-Type" => "text/html; charset=utf-8"], [ decode("UTF-8", uri_unescape("%C2%A3")) ]]}'
HTTP::Server::PSGI: Accepting connections at http://0:5000/
--
Error: Body must be bytes and should not contain wide characters (UTF-8 strings) at /usr/local/lib/perl5/site_perl/5.14.0/Plack/Middleware/Lint.pm line 153
####
plackup -e 'use Encode; use URI::Escape; sub { [200, ["Content-Type" => "text/html; charset=utf-8"], [ encode("UTF-8", uri_unescape("%C2%A3")) ]]}'
HTTP::Server::PSGI: Accepting connections at http://0:5000/
--
£
####
perl -MCGI=param,-utf8 -le 'print param("q")' "q=%C2%A3"
?
####
perl -CO -MCGI=param,-utf8 -le 'print param("q")' "q=%C2%A3"
£
####
perl -MEncode -MCGI=param,-utf8 -le 'print encode("UTF-8", param("q"))' "q=%C2%A3"
£