Hallo,
http://de.php.net/manual/de/function.html-entity-decode.php
Hast du als drittes Argument den richtigen Zeichensatz übergeben? Defaultmäßig wird ja ISO-8859-1 verwendet, indem z.B. das Eurozeichen fehlt.
Nein. Das hatte ich noch nicht überprüft, da der Zeichensatz der Seiten i.d.R. nicht angegeben ist. Dir Browser übersetzen aber € trotzdem zu € (Euro-Zeichen). Scheint sich dann ja wohl auch um eine Art "Quirx-Mode" zu handeln
Jain ;-)). Die Entity € _ist_ Unicode.
Der Browser geht so vor:
Alle nicht Entity-Zeichen werden aus Byte-Code in das charset gemapt, welches für das Dokument angegeben ist. Für ISO-8850-1 gibt es dort genau diese http://www.fileformat.info/info/charset/ISO-8859-1/grid.htm map. In ISO-charsets hat _jedes_ Zeichen 8 bit. Es kann also nur 256 unterschiedliche Zeichen geben. Weitere Zeichen finden sich in _andern_ maps (ISO-8859-2, ISO-8859-3 ...). Nur charset=UTF-8 enthält alle Zeichen in einer map. Hier kann ein Zeichen aber unterschiedlich viele Octets belegen. http://www.faqs.org/rfcs/rfc2279.html
Entitys werden grundsätzlich in Unicode gemapt. Gibt es einen Font, der unter € = € = Unicode \u20AC ein Zeichen gemapt hat, dann wird dieses angezeigt.
Die PHP Funktion mapt nur gegen das angegebene charset. Gibt es das Zeichen dort nicht, dann kann es nicht umgewandelt werden. Nur gegen charset=UTF-8 können alle Zeichen umgewandelt werden.
viele Grüße
Axel