Byte order mark

Byte order mark (skratka BOM; v slovenčine doslovne „označenie poradia bajtov“) je špecifické použitie Unicode znaku U+FEFF (zero width no-break space – „nedeliteľná medzera nulovej šírky“; v desiatkovej sústave 65279) ako signatúry na začiatku textového súboru resp. toku dát, kde môže indikovať nasledovné:
 použité poradie bajtov (endianitu) v prípade 16- a 32-bitového kódovania,
 skutočnosť, že je použitá reprezentácia Unicode,
 ktoré konkrétne kódovanie znakov Unicode je použité.

V kódovaní UTF-8 je tento znak reprezentovaný trojicou bajtov 0xEF 0xBB 0xBF („UTF-8 signatúra“), v kódovaní UTF-16 big-endian dvojicou bajtov 0xFE 0xFF ako aj v kódovaní UTF-16 little-endian 0xFF 0xFE.

Hlavným dôvodom použitia tohto znaku je rozlíšenie poradia ukladania bajtov big-endian alebo little-endian v UTF-16 a jeho odlíšenie sa od UTF-8. V prípade zámeny poradia bajtov nie je znak U+FFFE platným Unicode znakom, pričom v kódovaní UTF-8 sa bajty 0xFE a 0xFF nesmú vyskytovať. Pre účely rozpoznania poradia ukladania bajtov je použitie BOM v UTF-8 zbytočné a slúži len napríklad aplikáciám operačného systému Microsoft Windows ktoré tento znak používajú na začiatku súboru aby rozlíšili súbory uložené vo formáte UTF-8. V niektorých systémoch (napr. POSIX) sa táto signatúra nepoužíva.

Používanie alebo nepoužívanie BOM môže byť zdrojom problémov. Napríklad Internet Explorer verzie 6 zobrazoval pri súboroch HTML s BOM netlačiteľné znaky na začiatku, teda ešte pred obsahom HTML.

 Zoznam najbežnejších BOM sekvencií 
+ BOM
(hex) BOM
(dec) Kódovanie Veľkosť priestoru Unicode Veľkosť atómu [B, 1 B = 8 b] Počet atómov Maximálna dĺžka znaku EF BB BF 239 187 191 UTF-8 21 b, > BMP 1 B 1 až 4 4 B FE FF 254 255 UTF-16 (BE) 21 b, > BMP 2 B 1 až 2 4 B FF FE 255 254 UTF-16 (LE) 21 b, > BMP 2 B 1 až 2 4 B 00 00 FE FF 0 0 254 255 UTF-32 (BE) 32 b, > BMP 2 B 2 4 B FF FE 00 00 255 254 0 0 UTF-32 (LE) 32 b, > BMP 2 B 2 4 B EF BB BF 239 187 191 UFT-8, rozšírenie 31 b, > BMP 1 B 1 až 6 6 B FE FF 254 255 UCS-2 (BE) 16 b, = BMP 2 B 1 4 B FF FE 255 254 UCS-2 (LE) 16 b, = BMP 2 B 1 4 B – – EASCII 8 b, < BMP 1 B 1 4 B – – ASCII 7 b, < BMP 1 B 1 4 B

 Referencie 

 Externé odkazy 
 The byte-order mark (BOM) in HTML na webe W3C 

Kategória:Kódovanie znakov
Kategória:Unicode