dedlfix: PHP-AUsgabe in Listenform

Beitrag lesen

Tach!

Tagesschau wird als rss-feed mit magpie parser eingelesen und mit korrektem Zeichensatz abgebildet (es sei denn ich würde bei den meta-Angaben utf-8 angeben.

Der RSS-Feed der Tagesschau ist UTF-8-kodiert. Deine Seite sagt, sie wäre Windows-1252. Warum nimmst du nicht UTF-8 sondern beschränkst dich künstlich auf 256 direkt verwendbare Zeichen?

Anscheind kommt bei dir eine (unter Umständen verlustbehaftete) Umkodierung zum Einsatz, die UTF-8 nach Windows-1252 umschreibt.

ZDF und NDR gibt es nicht als feed - sie werden direkt von der website mit file_get_contents eingelesen und bringen Sonderzeichen statt Umlaute.

Kein Feed? Das mag beim NDR stimmen, aber was ist damit:
http://www.heute.de/ZDF/zdfportal/web/heute-Nachrichten/4672/3998/f9101d/ZDFheute--Nachrichten---Startseite.html?view=rss

Beide Seiten sind jedenfalls UTF-8-kodiert. Beim ZDF kodierst du anscheinend den bereits in UTF-8 vorliegenden Text nochmal von ISO-8859-1/Windows-1252 nach UTF-8, stellst das dann in deine Seite und erzählst, es sei Windows-1252. Beim NDR unterlässt du die Umkodierung und stellst den UTF-8-Text direkt in deine Seite und die sagt immer noch Windows-1252. Deswegen siehst du 4 Zeichen pro Umlaut beim ZDF und 2 beim NDR.

Focus und FAZ werden wieder als feed eingelesen, bringen auch korrekte Umlaute aber keine Anführungsstriche unten/oben, sondern dann nur Fragezeichen.

Spiegel hast du nicht erwähnt, aber der sendet seinen RSS-Feed als ISO-8859-1 (WTF?), den du anscheind 1:1 durchreichst. Focus und FAZ haben wieder einen UTF-8-RSS-Feed, den du wohl wieder umkodierst - nach ISO-8859-1 und nicht nach Windows-1252, denn so hättest du wenigstens die Anführungszeichen und die langen Gedankenstriche bewahrt. Generell musst du aber beim Umkodieren von einer auf einem Zeichensatz von derzeit 1.114.112 Zeichen basierenden Zeichenkodierung auf eine für einen Zeichensatz von maximal 256 Zeichen mit Verlusten rechnen. Diese äußern sich in einem Fragezeichen, weil ISO-8859-1/Windows-1252 keine Möglichkeit für einen anderen Platzhalter vorsieht. Deswegen ist es keine gute Idee, auf Windows-1252 (oder irgendwas anderes als UTF-8) zu setzen und Umkodierungen vorzunehmen (und die Grundlagenwissenerarbeitung zu vernachlässigen).

Quelltext wirst Du ja sehen können - vielleicht hast Du ja eine Idee.
http://www.weltammontag.de/index4.php

Der Doctype deiner Seite sagt, sie wäre XHTML und strict. Beides stimmt nicht. Aber das ist nur nebensächlich.

Was ich mit livehttpheader genau anfangen soll, weiß ich noch nicht. Die Zeichenkodierung sehe ich doch auch im Quelltext.

Bitte schau dir endlich die Grundlagen an, dann hast du an solchen Stellen keine Wissenslücken mehr. Die Zeichenkodierung steht dort nur als Ersatz-Wert. Eigentlich müsste sie im HTTP-Header stehen. Und wenn dort eine steht, hat sie Vorrang vor der im Dokument. Deswegen musst du dir beides anschauen, um Differenzen ausschließen zu können. Und vor allem, um die richtige Quelle zum Abfragen zu verwenden. Du hast doch sicher nicht fest irgendwo eingestellt, in welcher Kodierung die Quellen vorliegen, auf dass dieser Wert bei einer Änderung beim Anbieter ungültig wird?

P.S. Könntest du bitte wie hier üblich zitieren und nicht im TOFU-Stil? Danke.

dedlfix.