Thread HTML::Entities - decode_entities() erzeugt kein Unicode sondern Latin1
(40 answers)
Opened by GwenDragon at 2024-03-19 12:49
Ich versuche mal zu erklären, um was es geht; der Fall ist folgender auf einem Linux-System ein 15 Jahre altes CGI, das Dateien im Dateisystem durchsucht.
Klappt bei Nur-ASCII-Suchterm auch wunderbar. Formular sendet UTF-8-kodierten Suchstring (accept-encoding gesetzt auf utf-8) per GET (HTML) an ein Perl-CGI Parameter für Suchterm $term einlesen mit $term = CGI::param('term'); Datei mit UTF-8- und HTML-Entities-kodierten Inhalten öffnen open ($fh, '<', $filename) Einlesen in eine Zeichenkette $content einlesen per while ($line = <$fh>) { $content .= $line; } Mit decode $content in Perls Zeichenketten umwandeln Encode::decode('UTF-8', $content); Mit decode_entities in $content die HTML-Entities ersetzen $content = HTML::Entities::decode($content); Später prüfen, ob gefunden $found = 0; if ($content =~ /$term/si) { $found++ } Irgendwas falsch an dem logischen Ablauf? Hab ich was vergessen? Ich weiß ja wie sowas programmiert wird, ist stolpere nur über das Problem, dass Perl isn interne Format kodiert oder auch nicht. Last edited: 2024-03-21 12:43:12 +0100 (CET) |