phpbar.de logo

Mailinglisten-Archive

[php] Sonderzeichen + xmlparser

[php] Sonderzeichen + xmlparser

Peter Bieling net2 at media-palette.de
Die Sep 5 15:54:15 CEST 2006


Hallo Yannik,

> *gg* Ist mir egal... Mein richtiger Name ist Yannik, wenn dir das lieber 
> ist :-).

noch lieber wäre mir, Du würdest Deinen richtigen Namen ins Feld From: 
eintragen, so wie die meisten hier. :-)

>>Versuch mal dies: <?xml version="1.0" encoding="ISO-8859-1"?>
> 
> Das war schonmal eine gute Idee... Jetzt kommt wenigstens kein invalid 
> character Fehler mehr...Trotzdem funktioniert es mit UTF-8 als encoding 
> nicht. Dabei is der ISO-Zeichensatz doch in ISO komplett enthalten, doer 
> sehe ich das falsch...?

Ja, leider: http://de.wikipedia.org/wiki/Utf8
In der Tabelle Kodierung findest Du:
"In diesem Bereich (128 Zeichen) entspricht UTF-8 genau dem ASCII-Code: 
Das höchste Bit ist 0, die restliche 7-Bitkombination ist das 
ASCII-Zeichen."
ö ist 148!
Das heißt, in UTF-8-Codierung brauchst Du 2 Byte, was dann bei 
Nicht-UTF8-Ausgabe als ö erscheint.
Lesenswert auch http://de.wikipedia.org/wiki/ASCII

> Ausserdem habe ich nochwas bemerkt: der character-Data-Handler wird bei 
> Entitäten mehrmals aufgerufen. Da ich aber immer nur den ersten Aufruf 
> beachtet habe, sind die Entitäten und alles, was dahinter steht immer 
> abgeschnitten worden. :-(.
> Wenigstens werden die <> jetzt korrekt ausgewertet.
> Aber aus ö wird jetzt ö.
> Sieht für mich nach einem Zeichensatzproblem aus... Aber ich habe den 
> ISO-Zeichensatz doch jetzt angegeben... Was könnte da noch falsch sein...?
> (Um ein Browseranzeigeproblem auszuschliessen habe ich in dem 
> character-Data Handler auch mal htmlentities auf den ausgelesenen String 
> angewendet.

Du hast uns noch nicht verraten, ob Du mit PHP4 oder PHP5 arbeitest. Da 
gibt es grundlegende Unterschiede:
http://www.media-palette.de/xml-line-0-4-3-6-alpha/ (siehe ganz unten 
auf der Seite.)
Wie ich vorhin gerade getestet habe, stimmt die Aussage inzwischen wohl 
auch für PHP4 nicht mehr, dass das Quelldokument das Format der Ausgabe 
beeinflusst. Das scheint bei PHP4 standardmäßig Latin1 zu sein und bei 
PHP5 UTF-8.

> Die meisten meiner xml-Inhalte sind recht kurz... Die CDATA Abschnitte 
> würden die ganze Datei um ca. 20% Grösser machen. Und es darf ja kein 
> ]]> in den Elementen vorkommen :-(.

Ja, besser man wandelt die Zeichen, wieder um, die man codiert benötigt.
Ich habe meine Klasse jetzt so erweitert, dass sie solche Fehler 
abfängt. (CData-Abschnitte werden ausgelassen.)
Bei Interesse kannst Du ja mal gucken, wie ich das gelöst habe:
http://www.media-palette.de/xml-line-0.4.0.zip

Viele Grüße

Peter


php::bar PHP Wiki   -   Listenarchive