Byte order mark

Från Wikipedia
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 byten 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 före varje kompilering, och hellre använda en editor som inte lägger till en BOM.

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]