pl: Nachdenkliches zur BOM die gar keine ist

Beitrag lesen

hi,

Der Oktettwert 61 steht in UTF-8 für den Codepoint U+0061. Wo ist da die Ungleichheit?

Das ist ja auch ASCII. Ganz ASCII ist eine Teilmenge von UTF-8. Und für ASCII gilt daß Oktettenwertigkeit gleich dem Codepoint ist. Und bis auf Ausnahmen gilt das auch für die Zeichen der ISO-8859-1 Gruppe. Aber das habe ich ja vorhin schon geschrieben.

Die Oktetts D8 3D DE 00 stehen in UTF-16BE für den Codepoint U+1F600. Wo ist da die Gleichheit?

U+1F600 ist in Unicode das Zeichen GRINNING FACE das hat in UTF-8 die Oktetten F0 9F 98 80 , also das sind mehr als 2 Oktetten. Ausgehend von der Zahl 0x1F600 sehen wir ja auch schon, daß wir mindestens 3 Oktetten brauchen und das liegt dann eben in 32Bit Bereich.

Nun, UTF16 heißt 16 Bit, kann also normalerweise nur Zeichen der Codepoints bis 16 Bit kodieren, Aber: Es gibt eine Regelung, welche die Kodierung auch höherwertiger Codepoints ermöglicht. Der Algorithmus ist hier beschrieben und ist auf das Zeichen U+1F600 anzuwenden.

Es entsteht ein sog. High-Surrogate und ein Low-Surrogate und damit hast Du Deine obenstehenden Oktetten für das Grinsende Gesicht 😀

MfG