shev: XML + PHP - Umlaute wie ä,ö richtig ausgeben?

Hi,
in meiner xml Datei kommen Umlaute wie ä vor.
Enkodierung:
<?xml version="1.0" encoding="ISO-8859-1"?>

Mozilla Firefox zeigt die Ä, ö und so weiter korrekt in der .xml Datei an.
Nutze ich simplexml_load_file() kann ich den Inhalt der .xml Datei holen
und anzeigen. Nur werden die Umlaute inkorrekt dargestellt.
Meine alte Lösung bestand darin, statt ä  ae's in der .xml Datei zu verwenden,
und php das ganze wieder "zurück" verwandeln zu lassen.
Diese Lösung ist IMO schlecht, ich glaube es muss eine Lösung geben die:

- Speichern von Umlauten in .xml Dateien, und korrekter Wiedergabe
  des Inhaltes mittels php->html.

Bin für jede Hilfe dankbar.

  1. Hallo,

    Speichern von Umlauten in .xml Dateien, und korrekter Wiedergabe

    Verwende doch einfach utf8 als encoding. Ich verwende es bei meinen XHTML-Datein und habe keinerlei Probleme mit Umlauten.

    Gruß,
    Severin

    --
    They that can give up essential liberty to obtain a little temporary safty deserve neither liberty nor safty.
    -- Benjamin Franklin
  2. Nutze ich simplexml_load_file() kann ich den Inhalt der .xml Datei holen
    und anzeigen. Nur werden die Umlaute inkorrekt dargestellt.

    Nein, sie werden nur in UTF-8 dargestellt. SAX- und DOM-Parser sowie die meisten proprietären XML-Parser wandeln den Eingabe-Text um nach UTF-8, einzige Ausnahme bildet hier <![CDATA[]]>. Das wird gemacht, um dem Programm eine Zeichensatz-unabhängige Schnittstelle zu bieten. Egal, welches Encoding die Eingabe-Datei hat, das, was im Programm ankommt ist dann [b]immer[/b] UTF-8.

    - Speichern von Umlauten in .xml Dateien, und korrekter Wiedergabe
      des Inhaltes mittels php->html.

    Wandle den Output entweder nach Latin9 bzw. Latin1 um (je nach Geschmack) oder, wie Severin schon sagte, nutze UTF-8. Ich würde zu letzterer Lösung raten. UTF-8 ist einfach zukunftssicherer.

    1. Ich würde gerne UTF-8 verwenden.
      Verwende:
      <?xml version="1.0" encoding="UTF-8" ?>

      Drinnen test tags, eines davon hat ein ä

      Firefox zeigt eine Art Quadrat mit einem Fragezeichen an anstatt ein
      ä. Ich bin mir nicht sicher warum. Kann es auch am Editor liegen?
      (Bluefish, Linux, Encoding auf UTF-8 festgelegt), oder gibt es in
      der .xml Datei noch etwas hinzuzufügen?

      1. Ich würde gerne UTF-8 verwenden.
        Verwende:
        <?xml version="1.0" encoding="UTF-8" ?>

        Das steht jetzt in der XML-Datei oder was?

        Drinnen test tags, eines davon hat ein ä

        Firefox zeigt eine Art Quadrat mit einem Fragezeichen an anstatt ein
        ä. Ich bin mir nicht sicher warum. Kann es auch am Editor liegen?
        (Bluefish, Linux, Encoding auf UTF-8 festgelegt), oder gibt es in
        der .xml Datei noch etwas hinzuzufügen?

        Wenn es an den Browser gesendet wird, musst du noch den richtigen HTTP-Header schicken, also dem Browser sagen, welcher Charset das ist -- der Charset aus dem Header überwiegt nämlich den Charset aus der Datei. Da du ja PHP benutzt, kannst du das so machen: header("Content-Type: text/xml; charset=UTF-8"); bzw. halt text/html wenn du das XML nach HTML umwandelst.

        1. "Das steht jetzt in der XML-Datei oder was?"
          Yep.

          Danke für die Hilfe!