Jan: Problem: XML php5 Umlaute

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

  1. 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

    1. 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

      --
      „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
      1. 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

  2. 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