Thread UTF-8 und POST-Parameter (9 answers)
Opened by JoeD at 2008-09-10 12:52

moritz
 2008-09-10 13:11
#114479 #114479
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Quote
Code: (dl )
print "Content-type: text/html\n\n";


Das ist der erste Fehler: du musst dem Browser schon die Kodierung mitteilen:

Code: (dl )
print "Content-Type: text/html; charset=utf-8\n\n";


Der zweite Fehler ist, dass du die param()-Funktion von CGI neu erfindest.

Der dritte Fehler ist, dass $URLRAWDATA dekodierte Parameter enthält wenn wenn die Daten von STDIN gelesen werden (wegen -CS), aber bytestrings aus $ENV{'QUERY_STRING'};.

Je nach CGI.pm-Version kann es reichen, sowas zu schreiben:

Code (perl): (dl )
1
2
3
4
5
6
7
use CGI;
my $q = CGI->new;
$q->charset('UTF-8');

print $q->header();

print $q->param('name');


Bei älteren CGI.pm Versionen musst du noch von Hand dekodieren:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
use CGI;
use Encode qw(decode_utf8);
my $q = CGI->new;
$q->charset('UTF-8');

print $q->header();

my $name = decode_utf($q->param('name'))
print $name;


Siehe auch Perl und Zeichenkodierungen.

View full thread UTF-8 und POST-Parameter