Ankündigung

Einklappen
Keine Ankündigung bisher.

Probleme mit XML UTF8

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Probleme mit XML UTF8

    PHP-Code:
     $dom = new DOMDocument("1.0""UTF-8"); 
    Hallo PHP-Forum,
    hoffentlich kann mir jemand helfen. Ich habe mit dem o.g. Code ein neues $dom Objekt angelegt. Wenn ich aber die Daten ausgeben will bekome ich die Fehlermeldung
    Code:
    "Junk" nach Dokument-Element
    Der Quelltext der Webseite zeigt mir dann vor dem Fehler
    Code:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    Wie erwartet werden die deutschen Umlaute + "ß" nicht richtig dargestellt.
    Wenn ich meine Strings in den XML tags noch einmal per UTF8_encode codiere bekomme ich zwar eine Ausgabe, aber mit Hyroglyphen.

    PHP-Code:
    $dom->encoding Ausgabe:(utf-8
    Hat jemand 'ne Idee??


  • #2
    Zitat von RonnesPHP Beitrag anzeigen
    Wenn ich aber die Daten ausgeben will bekome ich die Fehlermeldung
    Code:
    "Junk" nach Dokument-Element
    Von wem bekommst du diese Fehlermeldung?

    Hat jemand 'ne Idee??
    Wie lieferst du das ganze an den Client aus? Welche Angabe zur Zeichenkodierung wird ggf. in den HTTP-Antwortheadern gemacht?

    Kommentar


    • #3
      Hallo ChrisB,
      Von wem bekommst du diese Fehlermeldung?
      zur Zeit versuche ich nur ein Test.php auf dem Lokalhost laufen zu lassen. Wenn das dann funktioniert, soll es ein Ajax Callback werden.
      [CODE]
      XML-Verarbeitungsfehler: "Junk" nach Dokument-Element
      Adresse: http://localhost/Radplanplus/XML_AJAX/AJAXTEST.php
      Zeile Nr. 2, Spalte 1:<font size='1'><table dir='ltr' border='1' cellspacing='0' cellpadding='1'>
      /CODE]
      Das st die Ausgabe vom Browser. Die Strings aus den XML Tags werden aus eine MYSql Datenbank gelesen. Die Strings müßten eigentlich (???) UTF8 codiert sein. Sieht zumindest in der DB gut aus.

      Könnte das was mit der automatischen urldecode aus den SUPERGLOBLS zu tun haben?

      Kommentar


      • #4
        Abgesehen davon, was du heutzutage eigentlich noch mit dem FONT-Element willst (Hallo, CSS existiert!) - wie sieht denn das XML-Dokument aus?

        Kommentar


        • #5
          PHP-Code:
             $newnode->setAttribute($fields[$index]->name,/* utf8_encode*/($row[$fields[$index]->name])); 
          Ich glaube nicht, dass es am XML liegt. Wenn ich das utf8_encode wieder reinbringe funktioniert die XML Ausgabe. Bloß mein Strings sind dann ("übercodiert"),d.h. so als wenn ein utf8 nochmal per utf8_encode codiert wird.

          Die Strings stammen aus eine ACCES DB, die mittels urlencode übertragen wurden.
          PHP-Code:
           function createContext($sql$command) {
                  
          $opts = array(
                      
          'http' => array(
                          
          'method' => "GET",
                          
          'header' => "Accept-language:de, de-de, en;q=0.5, fr;q=0.2\r\n" .
                          
          "Cookie: sql_command=" urlencode($sql "~#~" $command) . "\r\n"
                      
          )
                  );
                  
          //   echo "remote: ".urlencode($sql . "~#~" . $command)."</br>";
                  
          $context stream_context_create($opts);
                  
          $this->context $context;
                  return 
          $context;
              }

          ...
          $myresult file_get_contents($this->urlfalse$this->context); 
          Hier ist der Kontext dazu. Evtl. ist ja hier was faul

          Kommentar


          • #6
            erzeugst du <?xml encoding ... selbst ? oder mach das dein $dom-dingens ?

            und was bitte hat eine Routine zur Cookie-behandlung mit deinem xml-Output zu tun ...

            bitte tu uns mal den Gefallen und poste eine der erzeugten XML-Dateien , da XML ja sowohl vom Computer als auch vom Menschen gelesen und bearbeitet werden kann, ändere halt Sachen, die geheim bleiben sollen und zeig uns den XML-Code !

            nach meiner eigenen Erfahrung sollte UTF-content sich eigentlich mit ner ISO 8859-1 codierten Datei vertragen ... zumindest soweit sich von meiner Webanwendung mit UTF-8 Datenbank sagen kann ...
            mE solltest du beim codieren deiner Strings aufpassen .. wenn die aus deiner Datenbank als UTF8 kommen, dann brauchen die eigentlich kein weiteres encoding, wenn die XML im gleichen Format vorliegt - wozu allerdings deine encoding-Angabe im XML-Kopf nicht passt ...
            "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

            Kommentar


            • #7
              Hallo,
              ich bin mir jetzt sicher, das maine Strings in der DB nicht im UTF8 Format vorliegen. phpMyAdmin hat mich hier auf die falsche Fährte gelockt. Ich verusche jetzt erst mal rauszukriegen, warum meine Strings falsch in die Datenbank kommen.

              Kommentar


              • #8
                wie sind deine Tabellen in der Datenbank definiert ? Collation utf8-general-ci ? oder ähnliches ?..
                "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

                Kommentar


                • #9
                  wie sind deine Tabellen in der Datenbank definiert ? Collation utf8-general-ci ? oder ähnliches ?..
                  Ja, genau so. Ich habe jetzt herausgefunden, dass meine Strings als [varchar(50) in der DB] definiert teilweise zu lang sind. Komischerweise macht sich das nur bemerkbar, wenn der das letzte nicht abgeschnittene Zeichen ein "ß" ist. Wenn dieser String dann einem XML Element als Attribut zugfügt wird, wird das XML -Document "zerstört". Mein Problem löst sich, wenn ich die Strings ordentlich in die DB bringe.
                  Trotzdem suche ich noch nach einer Möglichkeit, soche Fehler vorher zu erkennen und wenigstens eine Fehlermeldung zu generieren.

                  Kommentar


                  • #10
                    nun, wenn das an der Länge hängt ..
                    PHP-Code:
                    if (strlen($einzufuegenderString)>(Länge des Varchars)) 
                       echo 
                    "Mecker: Eingabe zu lang, oder Feld zu kurz<br>"
                    sowas solltest du bei der obligatorischen Prüfung von übergebenen Formulardaten abfangen - daneben kannst du es unterstützen, mit 'maxlength="50" ' bei deinem Input-Feld ...
                    "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

                    Kommentar


                    • #11
                      Die funktion mysql_set_charset hat bei mir bei Zeichensatzproblen in Verbindung mit Mysql schon öfters Wunder bewirkt.

                      Kommentar


                      • #12
                        @all Danke an alle die sich beteiligt haben.

                        Die Fehlermeldung hab ich so eingebaut, meine Anwendung funtkioniert und mysql_set_charset hat die erhofften Wunder bewirkt.
                        Hier kann ich allerdings nicht nachvollziehen warum? Die DB war von anfang an in allen Tabellen etc. auf UTF8 eingestellt. Was macht deann eigentlich das mysql_set_charset utf8? Muss ich das nun jedes mal mitsenden oder reicht das einmal? Evtl. muss ich die Frage noch mal im anderen Forum stellen. Trotzdem nochmal "Schönen Dank an die fleißigen Forumshelfer"

                        Kommentar

                        Lädt...
                        X