Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit Sonderzeichen aus MySQL-Datenbank in XML

Einklappen

Neue Werbung 2019

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

  • Problem mit Sonderzeichen aus MySQL-Datenbank in XML

    Hi all,

    für meine Website mit einer großen Datenbank, die ich offline auf localhost bearbeite, habe ich ein PHP-Script geschrieben, dass die Daten aus der MySQL-Tabelle ausliest, dann in XML schreibt und mit cURL an ein weiteres PHP-Script auf meiner Online-Website schickt. Dieses Script gibt die Daten dann in die Online-MySQL-Datenbank ein.

    Das funktioniert alles schön und gut, nur leider tauchen in den Datensätzen häufig Sonderzeichen auf. Dafür lasse ich die Sonderzeichen mit Unicode-Bezeichnungen ersetzen - ich kann den Code hier nicht posten, weil er falsch dargestellt wird, die Sonderzeichen werden wohl hier im Forum auch falsch kodiert. Habe eine Textdatei mit dem Code angehängt.

    Dieses Ersetzen funktioniert gut, und auch Zeichen wie é kommen gut an. Allerdings kommt es z.B. bei á schon zu Schwierigkeiten. Das Ergebnis ist in diesem Fall á.

    Ich habe jetzt schon die Funktion iconv() vor dem Verschicken als XML ausprobiert:

    PHP-Code:
    $string iconv('UTF-8','ISO-8859-1',$string);

    // oder:
    $string iconv('UTF-8','ISO-8859-1//TRANSLIT',$string); 
    Hierbei kommt es immer zu einem Fehler im XML:
    Entity: line 167: parser error : xmlParseEntityRef: no name in ... on line 5
    Hier Zeilen 4 und 5 des empfangenden Scripts:
    PHP-Code:
    $xmlstring file_get_contents("php://input");
    $xml = new SimpleXMLElement($xmlstring); 
    Notfalls würde ich eben Zeichen wie á einfach durch a ersetzen (wie es die zweite oben angegebene Funktion theoretisch auch machen müsste), aber es muss doch eine Lösung geben.

    Ich hoffe, mein Problem wird verstanden und es wäre nett, wenn mir jemand helfen könnte.

    Viele Grüße
    Der Seb
    Angehängte Dateien

  • #2
    Wozu XML als Transportmittel? Du kannst doch mit PHP direkt zwei Verbindungen öffnen und die Daten übertragen.

    Zudem ist eine Konvertierung von Zeichensätzen nie garantiert verlustfrei möglich, da ja eben beide verschiedene Zeichensätze darstellen. Außerdem musst du selbst mit XML als Transportmittel keine Zeichensatzkonvertierung vornehmen, wenn alle Teilnehmer UTF-8 verarbeiten können.

    "á" oder ähnliches ist immer ein Anzeichen dafür, dass du ein Multibytezeichen nicht korrekt interpretierst, sprich dein Zeichensatz dieses eine Multibytezeichen als mehrere (hier 2) Einbytezeichen interpretiert (also ein UTF-8 Zeichen z.B. als ISO-8859-1-Zeichen/Bytes interpretiert wird)
    "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

    Kommentar


    • #3
      Zitat von Chriz Beitrag anzeigen
      Wozu XML als Transportmittel? Du kannst doch mit PHP direkt zwei Verbindungen öffnen und die Daten übertragen.
      Kannst du mir sagen, wie das geht? Danke.

      Kommentar

      Lädt...
      X