Thread Problem mit Zeichensatz bei Ajax Webseite
(37 answers)
Opened by bianca at 2018-11-01 15:05 2018-11-01T18:11:39 bianca Ja, CGI.pm hätte ich erwartet. Und danach? Vermutlich mit $query->param()? 2018-11-01T18:11:39 bianca Nach dem Aufruf von $query->param() sind die Daten meines Wissens nach nicht decodiert. Anders sieht's aus, wenn die Daten nach dem Aufruf einem XML- oder JSON-Parser vorgesetzt werden - der decodiert dann. Ich gehe aber nach Deiner weiteren Beschreibung (Validierung mit Regex) davon aus, dass das bei Dir nicht passiert, sondern dass der Inhalt eines einfachen Formularfelds drinsteht. Mir ist allerdings nicht klar, warum Du nach dem decode_utf8() ein Fragezeichen (das vermutlich der Unicode-"Replacement Character" ist) bekommst, denn der zeigt an, dass der Input keine korrekte UTF8-Codierung enthält. Es wäre einen Versuch wert, beim Aufruf von decode_utf8 als zusätzlichen Parameter Encode::FB_CROAK zu übergeben. In dem Fall stirbt das Programm bei ungültigem UTF-8 und sagt, welcher Input ihm vorgesetzt wurde. Nochmal zusammengefasst wie es funktionieren sollte: Wenn Du die Parameter sofort dekodierst, dann sollte auch das Pattern Matching die richtigen Resultate ergeben, auch wenn das Programm als ISO-8859-1 abgespeichert wurde (und dann natürlich kein use utf8 drinsteht): Code (perl): (dl
)
1 2 my $value = decode_utf8($query->param('value'),Encode::FB_CROAK); print "Da ist ein à drin" if $value =~ /à/; 2018-11-01T18:11:39 bianca Das war mein Fehler: Das ist nur bei Content-Types versorgt, die CGI nicht auflösen kann. Sorry! |