Preskočiť na obsah

Byte order mark

z Wikipédie, slobodnej encyklopédie

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]
  1. Unicode Character 'ZERO WIDTH NO-BREAK SPACE' (U+FEFF) [online]. fileformat.info, [cit. 2025-02-11]. Dostupné online.
  2. 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]