BOM (Byte Order Mark, v slovenčine „označenie poradia bajtov“) je hexadecimálne zapísaný znak ako FEFF (v desiatkovej sústave 65279).

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 . Grafický význam znaku je „nedeliteľná medzera nulovej šírky“ (zero-width no-break space ), čím je podobný znaku U+2060 (word joiner ). [1]

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.

BOM

(hexa)

Veľkosť

priestoru Unicode

Kódovanie Veľkosť

(B, 1B=8b)

Počet Maximálna

dĺžka znaku (B, B=8b)

EF BB BF 21b, väčšie ako BMP UTF-8 1B 1 až 4 4B
FE FF 21b, väčšie ako BMP UTF-16, variant UTF-16BE, (big-endian) 2B 1 až 2 4B
FF FE 21b, väčšie ako BMP UTF-16, variant UTF-16LE, (little-endian) 2B 1 až 2 4B
00 00 FE FF 32b, väčšie ako BMP UTF-32, variant UTF-32BE, (big-endian) 2B 2 4B
FF FE 00 00 32b, väčšie ako BMP UTF-32, variant UFT-32LE, (little-endian) 2B 2 4B
EF BB BF 31b, väčšie ako BMP UFT-8, rozšírenie 1B 1 až 6 6B
FF FE 16b, rovné BMP UCS-2, variant UCS-2BE, (big-endian) 2B 1 4B
FF FE 16b, rovné BMP UCS-2, variant UCS-2LE, (little-endian) 2B 1 4B
- 8b, menšie ako BMP ASCII + code page 1B 1 4B
- 7b, menšie ako BMP ASCII 1B 1 4B

Referencie

upraviť
  1. Byte Order Mark FAQ
  NODES
INTERN 1