Thread CGI decode-encode Frage
(4 answers)
Opened by Kuerbis at 2011-08-22 11:19
hi,
die param()-Methode liefert Bytes: Code (perl): (dl
)
$bytes = $cgi->param('input'); das können, utf-8-kodierte Zeichen sein oder anders kodierte Zeichen. Perl kennt an dieser Stelle keine Kodierung sondern nur Bytes. Wenn Du das wieder ausgeben willst, Richtung Webserver, STDOUT erwartet auch Bytes. Sobald du jedoch Perl mitteilst, das der String in $bytes _utf-8-kodierte_ Zeichen sind, wird $bytes Perl-Intern als SvUTF8 repräsentiert (Encode.pm). In dem Moment, wo Du das auf STDOUT schickst, werden die Zeichen verstümmelt. Abhilfe: Der IOLayer muss einen Tag bekommen, dann ist die Darstellung korrekt: Code (perl): (dl
)
1 2 3 binmode STDOUT, ':utf8'; print STDOUT $utf8_kodierte_Zeichenkette; # Darstellung ok --Rosti |