#!/usr/bin/perl -T -w use strict; use CGI qw(:standard); use Encode; binmode STDOUT, ":utf8"; my $cgi = CGI->new(); print $cgi->header(-charset => 'utf-8'), $cgi->start_html(-title => "Testing hidden-input character encoding", -encoding => 'utf8' ), $cgi->start_form; my $parms = $cgi->Vars; if ( $$parms{submit} ) { my $newtest = decode( 'utf8', $$parms{testtext} ); my $newhid = decode( 'utf8', $$parms{testtext_hid} ); print "
The testtext parameter as received was: ". $newtest, " The hidden parameter was: ". $newhid, $cgi->hidden( "testtext_hid", $newhid ); } else { my $testtext = "\x{444}\x{443}\x{431}\x{430}\x{440}"; print $cgi->textfield( -name => "testtext", -value => $testtext ), $cgi->hidden( "testtext_hid", $testtext ), $cgi->submit(-name => "submit", -value => "submit" ); } print $cgi->end_form, $cgi->end_html; ####
Testing hidden-input character encoding
####
......
####
d1 84 d1 83 d0 b1 d0 b0 d1 80
0444 0443 0431 0430 0440
####
c3 91 c2 84 c3 91 c2 83 c3 90 c2 b1 c3 90 c2 b0 c3 91 c2 80
00d1 0084 00d1 0083 00d0 00b1 00d0 00b0 00d1 0080
####
if ( $$parms{submit} ) {
my $newtest = decode( 'utf8', $$parms{testtext} );
my $newhid = decode( 'utf8', $$parms{testtext_hid} );
print " The testtext parameter as received was: ". $newtest,
" The hidden parameter has been decoded as: ". $newhid,
$cgi->hidden( "testtext_hid", $$parms{testtext_hid} );
# note: changed text content slightly, and used "raw" hidden value (not "decoded" value)
}