dedlfix: Nachdenkliches zur BOM die gar keine ist

Beitrag lesen

problematische Seite

Tach!

Vemutlich ist das hier den Wenigsten so richtig klar.

Vieleicht ist es aber auch so, dass dir nicht immer alles so klar ist, wie es dir erscheinen mag.

Unicode hat nicht vor, die Unzulänglichkeiten der anderen Kodierungssysteme auszubügeln, indem es ein Kennbyte einführt, das alle anderen Kodierungen zwar nicht kennen, es aber verwenden sollten, damit man sie besser erkennen kann. Die Idee ist zwar eine ganz gute, sie blendet aber sämtliche Nebenwirkungn technicher und gegebenenfalls auch politischer Art aus, und damit ist sie praktisch unbrauchbar. Zum einen fügt sich dieses Kennbyte ja nicht von selbst in alle bestehenden Dokumente ein, noch der Code in die Texteditoren usw., der dieses Byte überspringt oder auswertet.

Man würde damit nur noch mehr Chaos anrichten, als die Situation vor Einführung von Unicode bereits war. Geschweige denn, dass man Normierungsgremien dazu hätte bringen könnne, das Kennbyte in ihren Standard einzufügen.

Man liest eben nicht irgendein Zeichen aus einer Datei sondern Bytes.

"Man" verwendet einen StreamReader, der einem bereits dekodierte Zeichen zurückliefert statt einer Bytesuppe.

Und wenn man ein Zeichen wie U+FEFF haben bzw. erkennen will, muß man das erst aus den gelesene Oktetten (Bytes) + Kodierung => Zeichen wiederherstellen.

Der StreamReader von C# wertet selbständig die ersten drei Byte aus und stellt sich damit auf UTF-8 oder UTF-16LE oder UTF-16BE ein. "Man" muss also nicht in jedem Fall die Bytes selbst auswerten. Mit den richtigen Werzeugen liest "man" also sehr wohl Zeichen statt Bytes aus einer Datenquelle.

Und selbst wenn man selbst in einem Teil des Programms auf Byte-Ebene hantiert, wäre es sinnvoll, in höhrere Schichten des Programms ein für die geeigneteres Format weiterzureichen als lediglich die alles und nichtssagenden Bytes. - Zeichen bieten sich da an, wenn man Texte verarbeitet.

Genau das macht nämlich ein Texteditor, der uns damit suggeriert, wir würden Dateien zeichenweise lesen. Tatsächlich jedoch werden auch Textdateien byteweise gelesen, das war schon immer so.

Der Texteditor ist nochmal einige Abstraktionsschichten oberhalb der Bytes. Wie der das anstellt, dass ich als Anwender zeichenbasiert arbeiten kann, ist mir auch egal.

Unicode ist ein System zur Verwaltung von Zeichen. So hat ein Codepoint wie U+FFFE mit der Byteorder überhaupt nichts zu tun. Erst mit der Kodierung entstehen Oktetten, und erst ab 2 Oktetten spielt dann die Byteorder eine Rolle. So sind Codepont + Kodierung => Bytesquenzen um das mal verständlich darzustellen.

Man sollte annehmen, dass im Unicode-Gremium nicht nur Theoreten sind, sondern sie sich auch Gedanken um die Speicherbarkeit in Computersystemen gemacht haben. Du scheinst mir zu sehr in deinen Bytes verhaftet zu sein. Betrachtet man die Angelegenheit mal aus Zeichen-Sicht, so muss man sich keine Gedanken darüber machen, welche Bytes man an den Anfang eines UTF-xy-Textdokuments zu schreiben hat. Man setzt einfach das Zeichen U+FEFF dorthin. Fertig. Den Rest erledigt der Kodierer, der aus den Zeichen die Bytes entsprechend einer fester Regel erzeugt, ohne eine Extrawurst für die BOM braten zu müssen.

dedlfix.