Also selbst Zeichencodierung ich unterrichte, und ich habe eine vermutlich dumme Frage: Wikipedia sagtWarum BOM ist U + FE FF, anstatt U + FF FE?
Die Bytereihenfolgemarkierung (BOM) ist ein Unicode-Zeichen U + FEFF BYTE ORDER MARK (BOM), ...
, und ein Diagramm auf dieser Seite schreibt
Encoding Representation (hexadecimal)
UTF-8 EF BB BF
UTF-16 (BE) FE FF
UTF-16 (LE) FF FE
...
ich es ein wenig verwirrt bin. Wie ich weiß, sind die meisten Maschinen mit Intel-CPUs Little-Endian, also warum BOM ist U+FE FF
für UTF-16 (BE), anstatt U+EF BB BF
für UTF-8 oder U+FF FE
für UTF-16 (LE)?
Nun, weil U + FEFF ist ein Zeichen und U + FFEF ist nicht. Ein leerer Bereich hat die nette Eigenschaft, dass er keinen Effekt auf gerenderten Text hat, selbst wenn eine App ihn oder Fubs nicht richtig filtert, indem er Stücklisten mitten in einen Text-Stream einfügt. Sehr häufiger Fehler. –
Auf Ihrem "eher als U + EF BB BF für UTF-8": ziemlich lustig, weil UTF8 keine "Byte Order Mark" benötigt. Alle Werte in einem UTF8-kodierten Text sollen genau 1 Byte lang sein, so dass es keine Chance gibt, dass Ihre Endianz falsch ist. – usr2564301
@RadLexus Also benötigt UTF-8 keine BOM, um die Endianess anzuzeigen, während UTF-16 und UTF-32 tut? –