Hallo,
<?xml version="1.0"?>
<wurzel>
>Ü
</wurzel>
In dieser Methode wird das gespeicherte Objektmodell in ein gültiges XML umgewandelt.
Genau das versucht PHP hier wohl.
Das zuvor gespeicherte ">" ergibt nun korrekt zu ">", das "Ü" wird in einer von vielen möglichen Formen als "Ü" ausgeben.
Naja so viele andere Möglichkeiten bleiben ja nicht für XML Zeichendaten.
@frankx:
Dein XML hat keine Encoding Deklaration. Deshalb gilt:
Bei Abwesenheit von Informationen, die durch ein externes Transportprotokoll (z.B. HTTP oder MIME-Typ) geliefert werden, ist es ein Fehler, wenn ein Entity, welches eine Kodierungsdeklaration enthält, in einer anderen Kodierung an den XML-Prozessor übergeben wird. Ebenso ist es ein Fehler, wenn ein Entity, das weder mit einer Byte-Order-Markierung noch mit einer Kodierungsdeklaration beginnt, eine andere Kodierung als UTF-8 benutzt. Beachten Sie, dass wegen der Tatsache, dass ASCII eine Teilmenge von UTF-8 ist, ASCII-Entities nicht unbedingt eine Kodierungsdeklaration brauchen.
Dein "Ü" steht offensichtlich nicht im UTF-8 encoding im String, sondern im ISO-8859-x encoding. PHP würde also fehlerhaftes XML erzeugen, würde es das Byte xDC einfach so im Dokument stehen lassen.
Ein:
<?xml version="1.0" encoding="ISO-8859-1"?>
<wurzel>
>Ü
</wurzel>
wäre einen Versuch wert, eventuell verbunden mit einem
$doc=new DOMDocument('1.0', 'iso-8859-1');.
viele Grüße
Axel