Thread HTML::Parser und substr() (46 answers)
Opened by GwenDragon at 2023-05-09 13:09

haj
 2023-05-09 18:02
#194833 #194833
User since
2015-01-07
529 Artikel
BenutzerIn

user image
2023-05-09T15:27:07 GwenDragon
Ja, utf8_mode hab ich eingesetzt, damit Entities dekodiert werden.

Obacht: Sie werden mit utf8-mode als UTF-8-Bytes generiert, den Vorgang nennt man enkodieren.

2023-05-09T15:27:07 GwenDragon
Du meinst, ich soll dann noch das nehmen, um von einem Byte-Stream nach Characters zu kommen, damit substr() korrekt abtrennt?

$data = Encode::decode('utf-8', $data);

Ja, genau. Und dann den utf8-mode rauswerfen, damit Dir der Parser UTF8-Characters aus Deinen Entities macht, und natürlich am Ende des Spektakels wieder nach UTF-8 codieren, entweder mit encode oder mit
Code (perl): (dl )
binmode STDOUT,':encoding(UTF-8)';
vor den abschließenden print-Anweisungen.

Noch etwas Kleingedrucktes: Dogmatisch sauber (aber praktisch irrelevant) ist es, wenn Du $data zusammen mit Deinen HTML-Elementen (also ab <!DOCTYPE html>) in UTF-8 codierst. Dein HTTP-Header und Deine HTML-Elemente sind ASCII, da spielt das keine Rolle. Laut Standard wird nämlich der HTTP-Header, zu dem der Content-Type gehört, in ISO-8859-1 codiert - und es gibt HTTP-Header, in denen Umlaute vorkommen dürfen (der Realm, der heute kaum noch verwendet wird, ist ein Beispiel).

View full thread HTML::Parser und substr()