Hallo,
binmode STDIN => ':utf8';
my $q = CGI->new;
habe ich probiert, aber es führt leider nicht zum gewünschten Erfolg.
Mein Ziel ist es, alle Zeichen als UTF-8 entgegen zu nehmen und - falls es sich um kein ASCII-Zeichen handelt, als &#[ZAHLWERT\_DES\_ZEICHENS]; wieder an den Browser zu schicken.
Zunächst habe ich das so gemacht:
~~~perl
my $q = CGI->new;
my $param = $q->param("param");
# jetzt uncodieren
$param = Encode::decode_utf8($param)
my ( @res, $c );
foreach $c ( unpack( "U*", $string ) ) {
if ( $c > 127 || $c < 32 ) {
push( @res, '&#' . $c . ';' );
} else {
push( @res, chr($c) );
}
}
my $encParam = ( join( '', @res ) );
Das hat auch wunderbar funktioniert, aber leider ist bei meinem Provider "Encode" nicht installiert. Brauche eine Alternative und bin für jede Hilfe dankbar. Der Ansatz:
binmode STDIN => ':utf8';
my $q = CGI->new;
my $param = $q->param("param");
# jetzt uncodieren
my ( @res, $c );
foreach $c ( unpack( "U*", $string ) ) {
if ( $c > 127 || $c < 32 ) {
push( @res, '&#' . $c . ';' );
} else {
push( @res, chr($c) );
}
}
my $encParam = ( join( '', @res ) );
schlägt fehl.
Danke,
Meise.