Marko: PHP-Domtree in Datei schreiben/lesen Charsetprobleme

Hallo,

ich versuche gerade einen PHP Domtree in eine Datei zu schreiben, zu lesen. Die Funktion
 DomDocument->dump_file macht das zwar grundsätzlich, aber leider werden Sonderzeichen (äöüß...) in Entities gewandelt, und beim Einlesen mit domxml_open_file()  nicht rückgewandelt.

Da dump_file() keinen Charset Parameter kennt habe ich probiert mit dum_mem() und ISO-8859-1 bzw. UTF-8 als Charset zu arbeiten.
Bei ISO-8859-1 gibt es schon beim schreiben einen Fehler, bei UTF-8 beim Lesen. Die Daten im Domtree müssten eigentlich als ISO-8859-1 vorliegen (d.h. kennt der Domtree intern überhaupt ein Charset ?).

Gruss

Marko

  1. Hallo!

    DomDocument->dump_file macht das zwar grundsätzlich, aber leider werden Sonderzeichen (äöüß...) in Entities gewandelt, und beim Einlesen mit domxml_open_file()  nicht rückgewandelt.

    Der XML-Parser (libxml2) ist für das umwandeln verantwortlich. Der wandelt es aber in UTF-8 und nicht in HTML-Entities. Du darfst auch nicht vergessen, daß die DOMXML-Erweiterung noch ganz schön Beta ist.

    IMHO reagieren DOMXML von PHP Version zu PHP Version unterschiedlich..., kann sein, glaube ich. Und unter Linux anders als unter Windows.

    Da dump_file() keinen Charset Parameter kennt habe ich probiert mit dum_mem() und ISO-8859-1 bzw. UTF-8 als Charset zu arbeiten.

    Damit hatte ich auch noch kein Erfolg.

    Bei ISO-8859-1 gibt es schon beim schreiben einen Fehler, bei UTF-8 beim Lesen. Die Daten im Domtree müssten eigentlich als ISO-8859-1 vorliegen (d.h. kennt der Domtree intern überhaupt ein Charset ?).

    Ist ISO-8859-1 Voraussetzung? Wenn nicht, kannst Du alle Strings/Zeichen in von nach UTF-8 encodieren und beim Auslesen alle Strings/Zeichen nach ISO-8859-1 decodieren.

    http://www.php.net/manual/de/function.utf8-decode.php
    http://www.php.net/manual/de/function.utf8-encode.php

    Wenn Du die XML-Datei mit XSLT darstellen möchtest, ist UTF-8 so und so kein Problem.

    MfG, André Laugks

    --
    L-Andre @ gmx.de
    1. Hallo,

      daß die DOMXML-Erweiterung noch ganz schön Beta ist.

      ich weiss, und merk es immer mehr. Hab mir schon überlegt auf PHP5 auszuweichen, aber ich schrecke wegen mangelnder Doku und dem Beta Status (gibt seit gestern übrigens ne Beta 2) noch davor zurück.

      http://www.php.net/manual/de/function.utf8-decode.php
      http://www.php.net/manual/de/function.utf8-encode.php

      Danke, die Funktionen haben mir schonmal beim ersten Problem geholfen: Schreiben und Lesen eines Domtree in ein File geht jetzt.

      Wenn Du die XML-Datei mit XSLT darstellen möchtest, ist UTF-8 so und so kein Problem.

      Die in das File geschriebene nicht, aber an einer anderen Stelle ja, und da muss ich jetzt noch etwas experimentieren, da gibt es noch kleinere Probleme :-)

      Danke und Gruss

      Marko