Hallo,
Das Fragezeichen ist das Ersatzzeichen für Codes (Bytefolgen), die in UTF-8 ungültig sind.
Dieses Ersatzzeichen sieht normalerweise aus wie ein weißes Fragezeichen in einem schwarzen Karo (U+FFFD REPLACEMENT CHARACTER), und wenn die verwendete Schriftart ihn nicht hat, sollte ein Kasten erscheinen und kein Fragezeichen.
eben nochmal ausprobiert:
* IE (5.5 und 6.0) zeigt leere Kästchen und "verschluckt" ggf. ein bis zwei
Folgezeichen, je nachdem, wieviele zusätzliche Bytes das Startbyte ankündigt
* Opera (momentan 8.54) zeigt leere Kästchen, interpretiert aber die
nachfolgenden Zeichen trotzdem einzeln - d.h. er kombiniert nicht die
Folgezeichen, wenn er einen Fehler in der Sequenz erkennt
* Firefox (3.0.11) zeigt Kästchen mit "FF/FD", dem Code des Ersatzzeichens,
verhält sich aber sonst wie Opera (kombiniert nicht stur drauflos)
Ich hätte aber schwören können, dass ich schon einige Male Fragezeichen in einem Webdokument mit fehlerhafter Codierung gesehen habe ...
Das richtige Fragezeichen kenne ich nur vom umgekehrten Fall: Ein Unicode-String wurde in ISO-egal-welches konvertiert, und diejenigen Zeichen, die es da nicht gibt, werden durch Fragezeichen ersetzt. Das ist dann aber auch keine Fehlinterpretation der Bytefolge, sondern ein absichtlicher Fallback.
Vielleicht verwechsle ich es tatsächlich mit dieser Art Unfall.
Nein, weil diese Funktion -wie der Name schon sagt- nur ein paar wenige Codes umwandelt, die in HTML u.U. eine Sonderbedeutung haben. Im Wesentlichen sind das nur "<", ">", "&" und die Anführungszeichen.
Hmm, das macht doch htmlspecialchars(…), oder? htmlentities(…) vergurkt auch die Umlaute, weswegen ich sie nie verwende, macht das aber afaik nur für Zeichen, für die es benamste Entities gibt – bei Japanisch also wirkungslos.
Stimmt. ich verwende htmlentities() auch nie, hatte aber in Erinnerung, dass diese Funktion nur wenige Sonderzeichen mehr als htmlspecialchars() behandelt.
So long,
Martin
Errare humus est: Irren ist Mist.