Encoding Probleme (Umlaute) mit XML / PHP

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Encoding Probleme (Umlaute) mit XML / PHP

    Hallo Freunde der leichten Kodierung,

    ich bräuchte mal ein wenig Hilfe, und zwar bin ich dabei mit der DOM-Implementierung von PHP einen XML-Creator zu bauen.

    Es wird im Prinzip ein XML-File gebaut, der mit Daten aus einer DB gefüllt wird.

    Nun habe ich arge Probleme mit dem Encoding. In der Datenbank stehen Datensätze mit Umlauten wie Ü, ä, Ä usw.

    Leider funktioniert die Angabe vom Encoding aber nicht

    Quellcode

    1. $struct = $dom_imp->createDocument("", "", $dtd);
    2. $struct->encoding = 'ISO-8859-1';
    3. $root = AddNode($struct, "WebData", $struct);
    4. $information = AddNode($struct, "Information", $root);
    5. $title = AddNode($struct, "title", $information);
    6. ... (Knoten werden weiter aufgebaut und mit Daten gefüllt)


    Die Fehlermeldung ist folgende


    <b>Warning</b>: DOMDocument::saveXML() [<a href='function.saveXML'>function.saveXML</a>]: output conversion failed due to conv error in <b>creatorExporter.php</b> on line <b>173</b><br />
    <br />
    <b>Warning</b>: DOMDocument::saveXML() [<a href='function.saveXML'>function.saveXML</a>]: Bytes: 0xFC 0x62 0x65 0x72 in <b>creatorExporter.php</b> on line <b>173</b><br />
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE WebData SYSTEM "Data.dtd">
    <WebData><Information><title>Aktions


    Da sieht man dass er bei "Aktions" abschneidet, da sollte eig. "Aktionsübersicht" stehen und so weiter ....

    Wo liegt der Fehler?

    Besten Dank!!!
  • welche zeile ist denn die 173.?

    was mir nur auffällt:

    Quellcode

    1. $struct = $dom_imp->createDocument("", "", $dtd);
    2. $struct->encoding = 'ISO-8859-1';


    In der 1. Zeile scheint $struct eine ganz normale Variable zu sein, der ein bestimmter Wert zugewiesen wird. In dieser zweiten Zeile ist es auf einmal ein Objekt. Wie kommt es zu dieser wundersamen Wandlung?
  • Hallo

    "wulfgang" schrieb:

    welche zeile ist denn die 173.?

    was mir nur auffällt:


    In der 1. Zeile scheint $struct eine ganz normale Variable zu sein, der ein bestimmter Wert zugewiesen wird. In dieser zweiten Zeile ist es auf einmal ein Objekt. Wie kommt es zu dieser wundersamen Wandlung?


    In der DOMImplementation ist das doch so angegeben?

    http://de2.php.net/manual/de/function.dom-domimplementation-createdocumenttype.php

    Quellcode

    1. <?php
    2. // Creates an instance of the DOMImplementation class
    3. $imp = new DOMImplementation;
    4. // Creates a DOMDocumentType instance
    5. $dtd = $imp->createDocumentType('graph', '', 'graph.dtd');
    6. // Creates a DOMDocument instance
    7. $dom = $imp->createDocument("", "", $dtd);
    8. // Set other properties
    9. $dom->encoding = 'UTF-8';
    10. $dom->standalone = false;
    Alles anzeigen


    Ist das etwa nicht korrekt?

    In der 173. Zeile wird die aufgebaute Struktur ausgegeben

    Quellcode

    1. function PrintResult($toPrint) {
    2. // print the xml-structure
    3. $xml_string = $toPrint->saveXML(); // <-- 173. Zeile
    4. echo $xml_string;
    5. }