Problem: XML php5 Umlaute
Jan
- php
Hallo,
ich habe ein Problem mit den XML-Parserfuznktionen von PHP (xml_parser_create()) und habe auch schon das halbe Internet abgegrast ;)
Also:
Ich habe eine XML Datei mit folgendem Charset-Encoding "<?xml version='1.0' encoding='iso-8859-1'?>". Besitzen Elemente in dieser Datei Umlaute, so bricht der Parser den Datenstrom an dieser Stelle um und erzeugt eine neue Zeile.
Dieses Verhalten tritt erst mit PHP 5 auf. In PHP 4 läuft alles Problemlos.
Minimalbsp:
xml_set_character_data_handler($xml_parser, "indexCharacterData");
ruft auf:
function indexCharacterData($parser, $data) {
echo "<br>---> ";var_dump($data);
}
erzeugt folgende Ausgabe (PHP5:
---> string(8) " Artikel"
---> string(11) "übersicht "
in PHP 4 jedoch:
---> string(8) " Artikelübersicht"
Ich hab schon hinbekommen, dass aus "übersicht" in "übersicht" (jedoch blieb der Bruch bestehen) und das aus "Artikelübersicht" in "Artikelbersicht" umgesetzt wurde.
Ich denke es ist ein Charset Problem, aber hab eigentlich auch schon alle mir bekannten Möglichkeiten durchexerziert.
Gruß,
Jan
Hallo,
hast Du mal probiert das Charset auf UTF-8 zu setzen?
Des weiteren - ich weiss nicht ob du die XMLs von externen
Quellen beziehst oder sie manipulieren kannst - statt der
Umlaute die jeweiligen Entitaeten einzusetzen?
Gruesse aus Berlin
Markus
Hello out there!
statt der Umlaute die jeweiligen Entitaeten einzusetzen?
Es gibt in XML keine Entitäten für Umlaute (es sei denn, man definiert sich selbst welche).
Gruesse aus Berlin
Dito.
See ya up the road,
Gunnar
Hallo,
danke schon mal für die Antworten.
@molily, das hab ich schon probiert, in allen Variationen inzwischen :( Wie geschrieben, hab ich auch geschafft, dass ein Umlaut richtig angezeigt wird, aber trotzdem wird vor diesem ein Umbruch gemacht, der dazu führt, dass die Handlerfunktion in dem jeweiligen $data-prameter einmal mit "Artikel" und einmal mit "übersicht" aufgerufen wird.
Ich nutze diesen Parser, weil ich an "fremden" Code arbeiten muss, um diesen PHP5-"Fehler" auszumerzen, aber vielleicht wäre es eine Möglichkeit auf SimpleXML umzuschwenken.
@Markus, auf die XML-Quellen habe ich leider keinen direkten Zugriff, so dass ich diese nicht einfach umstellen kann. Sie werden aus einer Paradox-Datenbank (mit Delphi) erzeugt, vielleicht ist das ein Anhaltspunkt.
Gruß,
Jan
Hallo,
»Upon creating an XML parser, a source encoding can be specified«
http://de3.php.net/manual/en/ref.xml.php#xml.encoding
http://de3.php.net/manual/en/function.xml-parser-create.php
Wieso nutzt du übrigens nicht SimpleXML oder DOM?
Mathias