Jörg Reinholz: Das Skript zum Sonntag - PHP-Skripte automatisch reparieren

Beitrag lesen

Moin!

Nein. Geht nicht. Denn PHP weiß nicht warum die BOM da ist. Kann ja auch gewollt sein... Was könnte die BOM dort gewolltes bewirken?

Ich zitiere:

"Bei unzureichend spezifizierten Protokollen wird empfohlen, das Unicode-Zeichen U+FEFF (BOM, byte order mark), das für ein Leerzeichen mit Breite Null und ohne Zeilenumbruch (zero width no-break space) steht, an den Anfang des Datenstroms zu setzen – wird es als das ungültige Unicode-Zeichen U+FFFE (not a character) interpretiert, heißt das, dass die Byte-Reihenfolge zwischen Sender und Empfänger verschieden ist und die Bytes jedes 16-Bit-Worts beim Empfänger vertauscht werden müssen, um den sich anschließenden Datenstrom korrekt auszuwerten."

Du darfst nicht immer nur daran denken, dass HTML, XML oder dergleichen gesendet wird. Es kann ja auch PlainText oder gar etwas wie Postscript, LaTeX, DVI ... gesendet werden. Auch der Client ist auch nicht immer ein Browser, sondern womöglich eine Anwendung... welche die Daten weiter verarbeitet und eben bei UTF eine BOM erwartet. Und da PHP selbst schon ein Templatesystem ist wundert es sich eben nicht, wenn die BOM im "Template" (das ist hier das Skript) steht.

Also liegt es in der Verantwortung des Programmierers dafür zu sorgen, dass im Template nichts steht, was da nicht hinein gehört. Nur macht es eben der Windows-Notepad für viele Anwender recht schwierig - Microsoft wird (recht nassforsch) behaupten, die Mehrzahl der wolle das so auf die BOM zu verzichten, die wird gemäß den Voreinstellungen einfach ohne jede Interaktion eingefügt.

Jörg Reinholz