I've looked into it further and stripped it right back to the start.
Now I just have the unicode chars hard coded in the script and
printing them to a table.
I'm not even passing them through a form now, just printing them.
In CGI mode it works perfectly and in MP2 mode it loads fine the first
time after apache or the browser is restarted. Then goes kaboom, ie
gibberish
Here's both scripts.
_______ START CGI SCRIPT _______
#!/usr/local/bin/perl
#
# � � � Author Angie Ahl ([EMAIL PROTECTED]) : 2004/12/01 22:14:00
#
# script to test unicode, standard cgi mode.
# requires perl 5.8, DBI, DBD::MySQL, CGI and Encode
use strict;
use warnings;
use 5.008006;
use utf8;
use DBI;
use CGI (':standard');
use Encode qw/is_utf8 decode/;
binmode(STDOUT, ":utf8");
� � � � � � � � � � � �print header(-type => "text/html", �-charset
=> "utf-8");
� � � � � � � � � � � �print start_html(
� � � � � � � � � � � � � � � � � � � �# This seems to be no important?
� � � � � � � � � � � � � � � � � � � � -encoding => 'utf-8',
� � � � � � � � � � � � � � � � � � � �-title => "Simple UTF 8 test");
� � � � � � � � � � � �print "\n\n";
# page calls
� � � �unless (param('VertDo')) {
� � � � � � � � � � � �&startpage;
� � � �}
� � � �print "\n\n", end_html;
sub startpage {
� � � �my %uni = &unihash;
� � � �print "\n";
� � � �print start_form(-method=>"get", -action=>"/test.html");
� � � �print h1("Unicode test: Page 1");
� � � �print '<table border="1" cellpadding="5">';
� � � �my $tablinedef = "<tr>" . "<td>%s</td>" x 3 . "</td>\n";
� � � �# Headerline
� � � �printf $tablinedef,
� � � � � � � � � � � �"description","language","char in unicode";
� � � �foreach (sort keys %uni) {
� � � � � � � � � � � �printf $tablinedef,
� � � � � � � � � � � �$_,
� � � � � � � � � � � �$uni{$_}->{language},
� � � � � � � � � � � �textfield(-name=>$_,
-default=>$uni{$_}->{character}, -size=>50, -maxlength=>80);
� � � �}
� � � �print '</table>';
� � � �print hidden(-name=>'VertDo',
� � � � � � � � � � � � � � -default=>['test unicode']);
� � � �print submit(-name=>'Do',
� � � � � � � � � � � �-value=>'test unicode');
� � � �print endform;
}
# subroutines
sub unihash {
� � � �my %uni = (
� � � � � � � � � � � �hebrew_alef => {
� � � � � � � � � � � � � � � � � � � �character => chr(0x05d0),
� � � � � � � � � � � � � � � � � � � �language => "hebrew",
� � � � � � � � � � � �},
� � � � � � � � � � � �smiley => {
� � � � � � � � � � � � � � � � � � � �character => "\x{263a}",
� � � � � � � � � � � � � � � � � � � �language => "none",
� � � � � � � � � � � �},
� � � � � � � � � � � �zcaron => {
� � � � � � � � � � � � � � � � � � � �character => "\x{017d}",
� � � � � � � � � � � � � � � � � � � �language => "czech",
� � � � � � � � � � � �},
� � � � � � � � � � � �aogonec => {
� � � � � � � � � � � � � � � � � � � �character => "\x{0104}",
� � � � � � � � � � � � � � � � � � � �language => "polish",
� � � � � � � � � � � �},
� � � � � � � � � � � �lslash => {
� � � � � � � � � � � � � � � � � � � �character => "\x{0142}",
� � � � � � � � � � � � � � � � � � � �language => "polish",
� � � � � � � � � � � �},
� � � � � � � � � � � �recenu => {
� � � � � � � � � � � � � � � � � � � �character => "re\x{e7}enu",
� � � � � � � � � � � � � � � � � � � �language => "french",
� � � � � � � � � � � �},
� � � � � � � � � � � �citroen => {
� � � � � � � � � � � � � � � � � � � �character => "citro\x{eb}n",
� � � � � � � � � � � � � � � � � � � �language => "french",
� � � � � � � � � � � �},
� � � � � � � � � � � �abimer => {
� � � � � � � � � � � � � � � � � � � �character => "ab\x{ee}mer",
� � � � � � � � � � � � � � � � � � � �language => "french",
� � � � � � � � � � � �},
� � � � � � � � � � � �disco => {
� � � � � � � � � � � � � � � � � � � �character => "discoth\x{e8}que",
� � � � � � � � � � � � � � � � � � � �language => "french",
� � � � � � � � � � � �},
� � � � � � � � � � � �angies => {
� � � � � � � � � � � � � � � � � � � �character =>
"\x{0142}\x{e7}\x{263a}\x{0104}\x{263a}\x{0104}re\x{e7}enu\x{263a}",
� � � � � � � � � � � � � � � � � � � �language => "mixed",
� � � � � � � � � � � �},
� � � �);
return %uni;
}
_______ END CGI SCRIPT _______
_______ START MP2 PACKAGE _______
package unitest;
#!/usr/local/bin/perl
#
# � � � Author Angie Ahl ([EMAIL PROTECTED]) : 2004/12/01 22:14:00
#
# script to test unicode, standard cgi mode.
# requires perl 5.8, DBI, DBD::MySQL, CGI and Encode
use strict;
use warnings;
use 5.008006;
use utf8;
use DBI;
use CGI (':standard');
use Encode qw/is_utf8 decode/;
binmode(STDOUT, ":utf8");
sub handler {
� � � � � � � � � � � �print header(-type => "text/html", �-charset
=> "utf-8");
� � � � � � � � � � � �print start_html(
� � � � � � � � � � � � � � � � � � � �# This seems to be no important?
� � � � � � � � � � � � � � � � � � � � -encoding => 'utf-8',
� � � � � � � � � � � � � � � � � � � �-title => "Simple UTF 8 test");
� � � � � � � � � � � �print "\n\n";
# page calls
� � � �unless (param('VertDo')) {
� � � � � � � � � � � �&startpage;
� � � �}
� � � �print "\n\n", end_html;
� � � �return Apache::OK;
� � � �#1;
}
sub startpage {
� � � �my %uni = &unihash;
� � � �print "\n";
� � � �print start_form(-method=>"get", -action=>"/test.html");
� � � �print h1("Unicode test: Page 1");
� � � �print '<table border="1" cellpadding="5">';
� � � �my $tablinedef = "<tr>" . "<td>%s</td>" x 3 . "</td>\n";
� � � �# Headerline
� � � �printf $tablinedef,
� � � � � � � � � � � �"description","language","char in unicode";
� � � �foreach (sort keys %uni) {
� � � � � � � � � � � �printf $tablinedef,
� � � � � � � � � � � �$_,
� � � � � � � � � � � �$uni{$_}->{language},
� � � � � � � � � � � �textfield(-name=>$_,
-default=>$uni{$_}->{character}, -size=>50, -maxlength=>80);
� � � �}
� � � �print '</table>';
� � � �print hidden(-name=>'VertDo',
� � � � � � � � � � � � � � -default=>['test unicode']);
� � � �print submit(-name=>'Do',
� � � � � � � � � � � �-value=>'test unicode');
� � � �print endform;
}
# subroutines
sub unihash {
� � � �my %uni = (
� � � � � � � � � � � �hebrew_alef => {
� � � � � � � � � � � � � � � � � � � �character => chr(0x05d0),
� � � � � � � � � � � � � � � � � � � �language => "hebrew",
� � � � � � � � � � � �},
� � � � � � � � � � � �smiley => {
� � � � � � � � � � � � � � � � � � � �character => "\x{263a}",
� � � � � � � � � � � � � � � � � � � �language => "none",
� � � � � � � � � � � �},
� � � � � � � � � � � �zcaron => {
� � � � � � � � � � � � � � � � � � � �character => "\x{017d}",
� � � � � � � � � � � � � � � � � � � �language => "czech",
� � � � � � � � � � � �},
� � � � � � � � � � � �aogonec => {
� � � � � � � � � � � � � � � � � � � �character => "\x{0104}",
� � � � � � � � � � � � � � � � � � � �language => "polish",
� � � � � � � � � � � �},
� � � � � � � � � � � �lslash => {
� � � � � � � � � � � � � � � � � � � �character => "\x{0142}",
� � � � � � � � � � � � � � � � � � � �language => "polish",
� � � � � � � � � � � �},
� � � � � � � � � � � �recenu => {
� � � � � � � � � � � � � � � � � � � �character => "re\x{e7}enu",
� � � � � � � � � � � � � � � � � � � �language => "french",
� � � � � � � � � � � �},
� � � � � � � � � � � �citroen => {
� � � � � � � � � � � � � � � � � � � �character => "citro\x{eb}n",
� � � � � � � � � � � � � � � � � � � �language => "french",
� � � � � � � � � � � �},
� � � � � � � � � � � �abimer => {
� � � � � � � � � � � � � � � � � � � �character => "ab\x{ee}mer",
� � � � � � � � � � � � � � � � � � � �language => "french",
� � � � � � � � � � � �},
� � � � � � � � � � � �disco => {
� � � � � � � � � � � � � � � � � � � �character => "discoth\x{e8}que",
� � � � � � � � � � � � � � � � � � � �language => "french",
� � � � � � � � � � � �},
� � � � � � � � � � � �angies => {
� � � � � � � � � � � � � � � � � � � �character =>
"\x{0142}\x{e7}\x{263a}\x{0104}\x{263a}\x{0104}re\x{e7}enu\x{263a}",
� � � � � � � � � � � � � � � � � � � �language => "mixed",
� � � � � � � � � � � �},
� � � �);
return %uni;
}
_______ END MP2 PACKAGE _______