XML: Wert von "encoding" ermitteln

manuelme1

Grünschnabel
Hi,

ich hoffe ich bin hier richtig, ich konnte mich nämlich nicht entscheiden ob ich die Frage in das XML- oder in das PHP-Forum schreibe.

Also es geht darum, dass ich einen RSS-Reader habe (zFeeder), und mehrere Feeds auf einer Seite anzeigen lasse.
Leider sind manche der XML-Dateien im UTF-8-Format kodiert, und manche als iso-8859-1

Auf der Seite, auf der sie angezeigt werden, kann ich aber nur einen Charset angeben (ich habe UTF-8 angegeben). Bei der ISO-Kodierten Datei werden dann die Umlaute nicht richtig dargestellt.

Gibt es eine Möglichkeit, den Wert von "encoding" per PHP auszulesen, sodass ich die als ISO kodierte XML-Datei in UTF-8 umwandeln kann?

Vielen Dank!

mfg
 
Komisch dass das Skript das nicht selbst macht. Aber probier mal Folgendes:
PHP:
if( !preg_match('/<\?xml[^>]+encoding="utf-8"[^>]*\?>/is', $string) ) {
	$string = utf8_encode($string);
}
 
Hey danke,

jetzt funktioniert es.
Ich habe zur Sicherheit auch gleich noch an den Anfang der PHP-Datei die Zeile
PHP:
header("Content-Type: text/html;charset=utf-8");
eingefügt, da die Meta-Angabe im HTML-Code anscheinend auch manchmal ignoriert wird...!

Danke nochmal!

mfg
 
Die Angabe der verwendeten Zeichenkodierung im Quellcode selbst ist logisch gesehen auch eigentlich zu spät.
 
Hm...

ich war vielleicht etwas voreilig mit der Aussage, dass es jetzt funktioniert.
Wäre ja auch ein Wunder wenn mal etwas gleich beim ersten Mal klappt...!

Komisch ist nur, dass es auf meinem Apache zu Hause läuft, auf meinem Webspace im Internet allerdings nicht mehr.
Da werden dann die Umlaute in den Nicht-UTF-8-Dateien immernoch falsch dargestellt.




Vielleicht sollte ich das Falsch noch etwas genauer beschreiben:
Hier mal ein Auszug aus dem angezeigten Feed: "R?sriese: EADS soll gr? und franz?cher werden"
Und so sieht das ganze im HTML-Quelltext aus:
Code:
<title>R&# 252;stungsriese:  EADS soll gr&# 246;&# 223;er
und franz&# 246;sischer werden</title>
Die Leerzeichen zwischen # und den Zahlen habe ich jetzt nur eingefügt, da sonst die Umlaute richtig dargestellt werden!
In der XML-Datei sieht es aber so aus (also ohne kodierte Sonderzeichen):
Code:
<title>Rüstungsriese: EADS soll größer und französischer werden</title>
Der verwendete Feed ist übrigens von Spiegel Online (http://www.spiegel.de/schlagzeilen/rss/index.xml)
Einer, der richtig angezeigt wird (da UTF-8 kodiert), ist der von Heise (http://www.heise.de/newsticker/heise.rdf)

Kann mir einer sagen woran das jetzt immernoch liegt?

Danke!

mfg
 
Zurück