pt004: PHP-AUsgabe in Listenform

Beitrag lesen

Also mal im Detail: Ich lese mit Magpie rssfeeds mehrerer webseiten ein (alles mit Genehmigung), die sind mit utf-8 codiert. Wenn sie bei mir ausgegeben werden - und ich ebenfalls utf-8 angebe, kommen trotzdem "zerschossene" Umlaute.

Hat jemand eine Idee, woran es sonst liegen kann? Wird für einen feed
manchmal eine andere Zeichenkodierung verwendet als für die HTML-Seite überhaupt?

Wenn ich für den PHP-Bereich meiner Seite noch mal extra einen bestimmten Code (header('Content-Type: text/html; charset=utf-8) festlege, hat das keine Auswirkung.

Rätsel über Rätsel. Gibt es keinen hunderptorzentigen Weg, den Zeichensatz einfach nach dem "echo" festzulegen?

Außerdem habe ich noch auf meiner Seite das Problem, dass Anführungsstriche unten/oben nie richtig erscheinen, sondern immer als Fragezeichen.

Gruß

Tach!

Dake für den Hinweis. Vielleicht liegt es ja daran, dass ich das gewünschte Ergebnis jetzt zwar in Listenform bekomme, aber mit Sonderzeichen statt Umlauten.

Dann hast du ein Problem mit unterschiedlichen Zeichenkodierungen. Der andere Inhalt verwendet eine andere als dein Inhalt. Das solltest du angleichen oder du musst umkodieren. Die Zeichenkodierung hat aber primär nichts mit dem Kontextwechsel zu tun. Letzterer ist gegen Sicherheitslücken zu beachten und dass einige kontextspezifisch spezielle Zeichen am Ziel korrekt interpretiert und dargestellt werden. Im Falle HTMLs sind das <>&".

An welcher Stelle muss das htmlspecialchards() eingefügt werden? Damit habe ich bisher keine Erfahrung.

Wenn du das Prinzip verstanden hast, weißt du auch, wo du es einsetzen musst.

echo "<li>" . $node->nodeValue . "</li>" ;
Kontextwechsel nicht missachten! Da fehlt noch ein htmlspecialchars() um das $node->nodeValue.

Noch genauer als "um das ..." kann ich es nicht erklären. Zudem gibt es nicht nur den Kontextwechsel-Artikel sondern auch unzählige Einsatzbeispiele im Netz, nicht zuletzt auf der PHP-Handbuchseite zu dieser Funktion.

dedlfix.