5 zerhackstückt XML-Umlaute
dey
- php
Hallo,
ich habe bisher XSL und unterschiedlichen Parsern auf Basis PHP 4.3.x verwendet um XML zu parsen und als HTML darzustellen.
Für XSL habe ich Umlaute umgeandelt in z.B. ü
<?xml version="1.0" encoding="iso8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format" version='1.0'>
<xsl:output method="html" encoding="ISO-8859-1" />
XSL gibt dann wieder ü zurück.
Auch PHP 4 wandelt ü wieder sauber in ü zurück, siehe Quelltext hier.
Allerdings zeigt PHP 5 irgendwelche skandinavischen Hieroglyphen an; wobei der Quelltext wiederum andere anzeigt als die Ausgabe.
Der Doctype ist für PHP 4 und 5 gleich:
<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'
'http://www.w3.org/TR/html4/loose.dtd'>
PHP 5 quittiert ein ü in der XML-Datei zudem auch als XML-Fehler: illegal character.
Hat jemand einen Tip?
bydey
Hallo dey,
<?xml version="1.0" encoding="iso8859-1"?>
Steht das wirklich so drin? Dann könnte es sein, dass die Zeichenkodierung auf Standard gesetzt wird und das XSL-Dokument als UTF-8 verarbeitet wird.
Ansonsten sehe in keine Probleme bei der Verarbeitung von Umlauten und numerischen Zeichenreferenzen unter XSLT+PHP4/5. Meine in ISO-8859-1 kodierten XML-Dokumente werden unter beiden PHP-Versionen problemlos transformiert.
Grüße,
Thomas
Hallo,
Hallo dey,
<?xml version="1.0" encoding="iso8859-1"?>
Steht das wirklich so drin? Dann könnte es sein, dass die Zeichenkodierung auf Standard gesetzt wird und das XSL-Dokument als UTF-8 verarbeitet wird.
XSL macht es ja auch!
PHP 4 auch.
Nur PHP 5 verhält sich nicht wie ich es erwarte.
<?xml version="1.0" encoding="iso8859-1"?> stand bis jetzt nur in der XSL. Habe es mal in die XML eingetragen. Hat aber bei PHP 5 nicht geändert.
Ansonsten sehe in keine Probleme bei der Verarbeitung von Umlauten und numerischen Zeichenreferenzen unter XSLT+PHP4/5. Meine in ISO-8859-1 kodierten XML-Dokumente werden unter beiden PHP-Versionen problemlos transformiert.
Mein letzter Notnagel ist dann strreplace. Ich hoffe, daß ich das noch vermeiden kann!?
Was mich zudem auch wundert ist der "XML-Fehler: illegal character" unter PHP 5. PHP 4 schien sich nur dafür zu interessieren, ob das XML well-formed war.
bydey
Hallo dey,
Nur PHP 5 verhält sich nicht wie ich es erwarte.
<?xml version="1.0" encoding="iso8859-1"?> stand bis jetzt nur in der XSL. Habe es mal in die XML eingetragen. Hat aber bei PHP 5 nicht geändert.
Ich fragte ja genau nach dieser Schreibweise und wollte auf das fehlende "-" nach ISO hinaus.
Grüße,
Thomas
Hallo,
Hallo dey,
Nur PHP 5 verhält sich nicht wie ich es erwarte.
<?xml version="1.0" encoding="iso8859-1"?> stand bis jetzt nur in der XSL. Habe es mal in die XML eingetragen. Hat aber bei PHP 5 nicht geändert.Ich fragte ja genau nach dieser Schreibweise und wollte auf das fehlende "-" nach ISO hinaus.
<?xml version="1.0" encoding="ISO-8859-1"?>
Ich habe jetzt dies in XML und XSL eingetragen und es ändert sich für PHP 5 nix.
bydey
Hallo dey,
Ich fragte ja genau nach dieser Schreibweise und wollte auf das fehlende "-" nach ISO hinaus.
<?xml version="1.0" encoding="ISO-8859-1"?>
Ich habe jetzt dies in XML und XSL eingetragen und es ändert sich für PHP 5 nix.
Kontrolliere nochmal die tatsächlichen Ein- und Ausgabekodierungen.
Grüße,
Thomas
Hallo,
Kontrolliere nochmal die tatsächlichen Ein- und Ausgabekodierungen.
Ausgabekodierung ist mir nur für XSL klar.
Ausgabekodierung bei PHP ist mir nicht klar, wo diese setze.
Eingabekodierung ist mir völlig unklar.
bydey
Hallo dey.
Ausgabekodierung bei PHP ist mir nicht klar, wo diese setze.
Eingabekodierung ist mir völlig unklar.
Meines Wissens mittels iconv_set_encoding.
Einen schönen Freitag noch.
Gruß, Mathias
echo $begrüßung;
Ausgabekodierung bei PHP ist mir nicht klar, wo diese setze.
Eingabekodierung ist mir völlig unklar.
Meines Wissens mittels iconv_set_encoding.
Diese Funktion ist nur was für die iconv-Erweiterung. PHP hat vor Version 6 keine eingebaute Konvertierung in eine bestimmte Kodierung, die man irgendwo generell angeben könnte.
echo "$verabschiedung $name";
echo $begrüßung;
Allerdings zeigt PHP 5 irgendwelche skandinavischen Hieroglyphen an; wobei der Quelltext wiederum andere anzeigt als die Ausgabe.
Bitte konkretisiere dich. Was genau wird angezeigt, welche Kodierung ist dabei im Browser eingestellt bzw. auf welche hat sich der Browser eingestellt?
Hat jemand einen Tip?
Beschreibe deine Probleme bitte nachvollziehbar. Welche Erweiterung verwendest du? Hast du ein Minimalbeispiel zm Nachvollziehen?
echo "$verabschiedung $name";