Hallo,
Ich bin neu hier und hoffe auf eure Hilfe.
Ich habe eine XML-Datei, die in UTF-8 codiert ist und entsprechend codierte Sonderzeichen enthält.
Die XML-Datei sieht wie folgt aus:
Ich lese die Datei in mein PHP-Script ein und verwende folgende Befehle zum parsen:
Werden die geparsten Daten nun in einer mySQL-Datenbank (Felder sind utf8_general_ci codiert) gespeichert. Rufe ich die Daten nun ab und lasse sie auf einer xHTML-Seite darstellen, so werden (wie zu erwarten) die codierten Sonderzeichen angezeigt, also das unverständliche zeugs.
Deklarationen der xHTML-Datei:
Wende ich nun aber vor dem Ablegen der Daten in der Datenbank ein utf8_decode(meine_geparsten_xml_daten) an, so werden die Umlaute korrekt in der DB abgelegt und hinterher auf der Seite angezeigt. Einige andere Sonderzeichen, wie z.B. ein spezieller Gedankenstrich, Anführungszeichen unten, usw. machen Probleme, an deren stelle steht einfach ein Fragezeichen.
Um die Verwirrung nun komplett zu machen. Wenn ich die XML-Datei, also die Datei die ich als Input-Datei für mein PHP-Script verwende, direkt im IE5 öffne, wird alles "richtig" dargestellt. Habe dann die komplette Dokumentstruktur und der Text zwischendrinn wird samt Sonderzeichen richtig angezeigt.
Was mache ich falsch?
Vielen Dank schonmal im voraus.
Ich bin neu hier und hoffe auf eure Hilfe.
Ich habe eine XML-Datei, die in UTF-8 codiert ist und entsprechend codierte Sonderzeichen enthält.
Die XML-Datei sieht wie folgt aus:
Code:
<?xml version="1.0" encoding="UTF-8"?> <mein-document> gegenüber – (Gedankenstrich) </mein-document>
PHP-Code:
$xml_parser_handle = xml_parser_create("UTF-8");
xml_parser_set_option($xml_parser_handle, XML_OPTION_TARGET_ENCODING, "UTF-8");
xml_set_character_data_handler($xml_parser_handle, "zeigeDaten");
xml_set_element_handler($xml_parser_handle, "startTag", "endTag");
xml_parse($xml_parser_handle, $xml_data);
xml_parser_free($xml_parser_handle);
Deklarationen der xHTML-Datei:
Code:
<?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
Um die Verwirrung nun komplett zu machen. Wenn ich die XML-Datei, also die Datei die ich als Input-Datei für mein PHP-Script verwende, direkt im IE5 öffne, wird alles "richtig" dargestellt. Habe dann die komplette Dokumentstruktur und der Text zwischendrinn wird samt Sonderzeichen richtig angezeigt.
Was mache ich falsch?
Vielen Dank schonmal im voraus.
Kommentar