PHP und SAX: Umlaute

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

  • PHP und SAX: Umlaute

    Hallo zusammen!

    Ich lese eine XML-Datei aus, die z.B. folgendes enthält:
    <ZIEL>
    <NAME>T&#252;rkei</NAME>
    ...
    </ZIEL>

    Die Inhalte speichere ich in einem Array ab. Das klappt auch ganz gut, bis auf die Umlaute. Türkei wird gespeichert als "T", Zürich als "Z", aber Ägypten als "Ä".

    Woran kann das liegen?

    Grüße,
    Jan

  • #2
    an der kodierung(sangabe), woran denn sonst?

    - xml-header
    - ausgabe (vermutlich html?): http-header, meta-tag
    - verarbeitungsschritte (in der skript-/programmiersprache deiner wahl)
    - editor-einstellungen

    Kommentar


    • #3
      So, langsam wird die Sache klarer....

      Das Wort Ägypten wird bei auslesen in 2 Teile geteilt, in "Ä" und "gypten", bei der Ausgabe fällt das nicht auf, sondern nur beim Schreiben in Variablen. Das Wort Zürich wird in 3 Teile geteilt: "Z", "ü" und "rich"
      Es wird also der character_data_handler nicht einmal aufgerufen, sondern mehrmals, die Frage ist nur wieso?
      Da ich die Variable nur schreibe, wenn sie noch leer ist, wird also für Ägypten nur geschrieben "Ä" und für Zürich "Z" und aus "TestÖTest" wird "Test".

      Ist klar was ich meine?

      Kann mir jemand sagen, wie oft der character_data_handler aufgerufen wird? Ich dachte einmal für z.B. den Tag <test>Inhalt</test>. Aber er wird 3x aufgerufen! Beim ersten Mal gibt es keinen Inhalt zurück, beim zweiten Mal "Inhalt", und beim dritten Mal wieder nichts.
      Für <test>Zürich</test> erhalte ich beim ersten Mal nichts, beim zweiten mal "Z", beim dritten Mal "ü", beim vierten Mal "rich" und beim fünften Mal wieder nichts.

      Ich bin total verwirrt....

      Kommentar


      • #4
        Beispiel, meine XML Datei sieht so aus:

        Code:
        <ORTE>
        
        <ZIEL>
        <NAME>Spanien</NAME>
        <ID>750</ID>
        </ZIEL> 
        
        
        <ZIEL>
        <NAME>Ibiza</NAME>
        <ID>751</ID>
        </ZIEL> 
        
        <ZIEL>
        <NAME>Italien</NAME>
        <ID>752</ID>
        </ZIEL> 
        
        
        <ZIEL>
        <NAME>&#196;gypten</NAME>
        <ID>753</ID>
        </ZIEL> 
        
        
        </ORTE>
        Im charracter_data_handler rufe ich jetzt jedesmal das auf:
        print("<br>Jetzt ist es: ".$data);

        Als Ausgabe erhalte ich

        Jetzt ist es:
        Jetzt ist es:
        Jetzt ist es:
        Jetzt ist es: Spanien
        Jetzt ist es:
        Jetzt ist es: 750
        Jetzt ist es:
        Jetzt ist es:
        Jetzt ist es:
        Jetzt ist es:
        Jetzt ist es:
        Jetzt ist es:
        Jetzt ist es: Ibiza
        Jetzt ist es:
        Jetzt ist es: 751
        Jetzt ist es:
        Jetzt ist es:
        Jetzt ist es:
        Jetzt ist es:
        Jetzt ist es:
        Jetzt ist es: Italien
        Jetzt ist es:
        Jetzt ist es: 752
        Jetzt ist es:
        Jetzt ist es:
        Jetzt ist es:
        Jetzt ist es:
        Jetzt ist es:
        Jetzt ist es:
        Jetzt ist es: Ä
        Jetzt ist es: gypten
        Jetzt ist es:
        Jetzt ist es: 753
        Jetzt ist es:
        Jetzt ist es:
        Jetzt ist es:
        Jetzt ist es:
        Jetzt ist es:
        Jetzt 2 Fragen:

        1. Wieso erhalte ich so viele leere Rückgaben, obwohl es keine leeren Tags gibt?
        2. Wieso werden Inhalte an Umlauten immer geteilt?

        Kommentar


        • #5
          Anscheinend hat das was mit diesem "Splitting-Bug" zu tun. Weiß da jemand genaueres?

          http://de3.php.net/manual/de/functio...ta-handler.php

          Grüße,
          Jan

          Kommentar

          Lädt...
          X