EisFuX: BOM, BOM, lovely BOM[1]

Beitrag lesen

(Hallo|Hi(ho)|Nabend) peter,

kann man irgendwie auslesen, mit welchem Zeichensatz/Encoding entgegengenommene Daten erstellt wurden?
z.B. die txt-Datei, die der Auftraggeber hochlädt und die mit PHP weiterverarbeitet wird?

Wenn man nicht allzu pingelig ist, kann man durch Prüfen der Byte-Order-Mark zumindest UTF-16- und UTF-32-Kodierungen (und ihre Unterarten) auseinanderhalten. In UTF-8 kodierter Text wird dagegen nicht immer mit einer BOM gespeichert. In dem Fall kann man zwar Vermutungen anstellen, aber mit 100-prozentiger Sicherheit wird man nicht herausbekommen, um welche Kodierung es sich handelt.

Beispielsweise könnte eine Maschine nicht erkennen, ob "„Fix, Schwyz!“ quäkt Jürgen blöd vom Paß." in ISO-8859-1 oder in UTF-8 kodiert ist. Ein Mensch würde wohl auf UTF-8 tippen und in den meisten Fällen Recht haben. Aber was ist, wenn diese Zeichenkette nur die Darstellung von UTF-8 in ISO-8859-1 zeigen soll?

...oder das Textfeld im Browser, das dann in die Datenbank eingetragen werden soll?

In dem Fall teilt der Browser dem Webserver mit, in welcher Kodierung er den Text gesendet hat.

--
[1] Eigentlich sollte das Thema schlicht „BOM“ lauten, aber dafür gabs die Fehlermeldung „Sie haben ein zu kurzes Thema angegeben“ ... ;-)

MffG
EisFuX