PHP-Domtree in Datei schreiben/lesen Charsetprobleme
Marko
- xml
0 André Laugks0 Marko
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
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
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