Probleme mit UTF-8
Meise2000
- perl
Hallo zusammen,
ich habe eine HTML-Seite mit Formular. Sowohl im Meta-Tag, im HTTP-Header und im accept-charset-Attribut des <form>-Tags habe ich UTF-8 angegeben.
<form accept-charset="UTF-8" method="post" action="myPerl.pl">
<input name="title" type="text"></input>
:
</form>
Nun gebe ich das Wort "Übung" in das Formularfeld "title" ein drücke auf "submit". Serverseitig möchte ich das ganze natürlich auch UTF-8 konform verarbeiten:
use utf8;
use strict;
use CGI;
my $query = CGI->new();
print $query->param("title"),"\n";
print utf8::is_utf8($query->param("title")),"\n";
foreach (split("",$query->param("title"))) {
print ord($_),"\n";
}
Ich erhalte folgendes Ergebnis:
Übung
0
195
156
98
117
:
Das verstehe ich nicht! Ich hätte statt der 195 und 156 eine 252 erwartet! Was mache ich falsch? Ich verwende Perl 5.8 (was laut Doku Unicode sehr viel robuster beherrscht als Perl 5.6) und habe es mit verschiedenen Browsern ausprobiert...
Nachtrag:
ein
my $title = $query->param("title");
utf8::decode($title);
wirkt wahre Wunder... aber warum?
Hey,
kurze Antwort: weil du das sowieso machen *musst*. Benutze aber das Modul Encode dafür, nicht die Lowlevelfunktionen aus dem Modul utf8.
Lange Antwort: http://forum.de.selfhtml.org/archiv/2006/7/t133539/#m866028
Hi,
diese Antwort (die längere Variante) hat mir wirklich gut geholfen! Vielen Dank!