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)[1] 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é.[2]
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.[2]
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í
[upraviť | upraviť zdroj]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
[upraviť | upraviť zdroj]- ↑ Unicode Character 'ZERO WIDTH NO-BREAK SPACE' (U+FEFF) [online]. fileformat.info, [cit. 2025-02-11]. Dostupné online.
- ↑ a b UTF-8, UTF-16, UTF-32 & BOM : Byte Order Mark (BOM) FAQ [online]. unicode.org, [cit. 2025-02-11]. Dostupné online.
Externé odkazy
[upraviť | upraviť zdroj]- The byte-order mark (BOM) in HTML na webe W3C (po anglicky)