Thread HTML::Entities - decode_entities() erzeugt kein Unicode sondern Latin1 (40 answers)
Opened by GwenDragon at 2024-03-19 12:49

GwenDragon
 2024-03-21 12:38
#195955 #195955
User since
2005-01-17
14563 Artikel
Admin1
[Homepage]
user image
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)
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

View full thread HTML::Entities - decode_entities() erzeugt kein Unicode sondern Latin1