Byte order mark

Från Wikipedia
Hoppa till: navigering, sök
Uppslagsordet ”BOM” leder hit. För andra betydelser, se Bom (olika betydelser).

En BOM (Byte order mark) är ett specialtecken (kodpunkt) i Unicode (teckenkodning för datorer).

Den används i första hand för att markera om en fil med Unicode-text i något av formaten UTF-16 eller UTF-32 är "big-endian" eller "little-endian". Kodpunktens värde är U+FEFF, och den ska ligga först i filen. En kodpunkt lagras vid "big endian" med den mest signifikanta byten först, så filen kommer att ha 0xFE 0xFF först i UTF-16BE. UTF-16 med "little-endian" (UTF-16LE) är standard internt i Windows för Unicode-text, så att Windows-filer kommer att ha 0xFF 0xFE först.

I Windows används BOM även i UTF-8 (vilket blir de tre bytena 0xEF 0xBB 0xBF), trots att UTF-8 inte har någon tvetydighet om hur lagring i bytes ska ske. BOM används här för att känna igen att en fil har UTF-8. Unix/Linux använder UTF-8 för Unicode men använder inte BOM eftersom det stör syntaxen för kommandofiler. BOM stör också kompilatorer för programspråk. Det går bra att med hjälp av UTF-8 införa Unicode i programspråk och kompilatorer som inte har Unicodestöd, bortsett från att en eventuell BOM då måste tas bort manuellt före varje kompilering.

Kodpunkten U+FEFF används också som "zero-width no-break space", i princip ett osynligt tecken. Kodpunkten U+FFFE, alltså med bytena i omvänd ordning, är ett förbjudet tecken i Unicode, detta för att känna igen BOM och vilken byteordning det är när 0xFE 0xFF eller omvänt ligger i filen.

Externa länkar[redigera | redigera wikitext]