Sven Rautenberg: Frage zum Validator-Ergebnis bzgl. utf-8 Zeichenkodierung

Beitrag lesen

Moin!

Ich gehe mal davon aus, daß 'BOM' die Unterscheidung zwischen 'little Endian' und 'big Endian' bezeichnen soll, also die Reihenfolge der Bytes, wie sie vom Prozessor verarbeitet werden.

Da hast du richtig geraten.

Als Hypothese stelle ich mal die These auf, daß sich dieses Problem weitgehend erledigt hat, seit Apple Intel-Prozessoren verwendet.

Wieso dies? Haben sich die alten Apple-Prozessoren seitdem in Luft aufgelöst, oder schlimmer: Wurden sie in Intel-CPUs konvertiert?

Und was ist mit den restlichen existierenden Nicht-Intel-CPUs, die in diversen Systemen dieser Computerwelt Verwendung finden? Hörten die auch alle auf zu existieren, seitdem Apple den Hersteller gewechselt hat?

Möglicherweise trifft die Möglichkleit, die in dem Hinweis geäußert wurde, nämlich daß das 'BOM' weitere Verbreitung findet, nie ein.

Die BOM ist für Dateien, die als UTF-16 oder UTF-32 gespeichert wurden, zwingend erforderlich. Bei UTF-8 hingegen ist sie verzichtbar, da UTF-8 auf Einzelbytes basiert, deren Reihenfolge auf beiderlei Plattformen identisch gehandhabt wird, es somit keine Verwechslung der Byteorder geben kann.

Insofern kann man sie weglassen - bzw. sollte es hinsichtlich der möglichen Kompatibilitätsprobleme lieber tun. Auch das Handling mit entsprechenden Textdateien vereinfacht sich sehr, wenn UTF-8 ohne BOM genutzt wird. Die BOM soll nämlich nur einmal am Start des Datenstromes kommen. Fügt man nun mehrere Einzeldateien schlicht zusammen, würden die BOMs am Beginn der Einzeldatei auch inmitten des Datenstroms auftauchen und dort ggf. stören (auch wenn der Unicode-Standard sagt, dass eine BOM in der Mitte zu ignorieren ist).

Und extra für das Zusammenfügen von Dateien eine Funktion schreiben, die die ersten drei Byte einer UTF-8-BOM abschneidet, ist in den meisten Fällen doch etwas zu aufwendig.

- Sven Rautenberg

--
"Love your nation - respect the others."