BOM (Byte Order Mark) są to znaki poprzedzające dokument, dzięki którym programy go odczytujące mogą odczytać różne informacje.
Po co to komu?
Przykładowo wysyłając pliki za pomocą protokołu HTTP mamy możliwość określenia typu za pomocą nagłówka Content-Type. Innym razem możemy uzgodnić z adresatem w jaki sposób powinien odczytywać dokument. Aczkolwiek czasami pojawiają się sytuacje, gdy należy odczytać dokument bez żadnej wiedzy o nim. I właśnie w takich przypadkach można się posłużyć prefiksem (BOM) od którego zaczyna się dokument.
Jakie informacje może zawierać BOM?
Jestem implementacją Unicode
Dzięki prefiksowi BOM możliwe jest stwierdzenie, że dokument został zapisany za pomocą którejś z implementacji Unicode
Jestem zapisany w kodowaniu
Dzięki prefiksowi BOM wiadomo także jaka jest to implementacja Unicode (UTF-8, UTF-16…).
W jakiej kolejności odczytywać bajty – endianess
Dzięki prefiksowi BOM jasne jest w jakiej kolejności odczytywać bajty. Przykładowo w UTF-16 mamy dwa bajty na słowo i teraz ważne jest w której kolejności odczytać te dwa bajty.
Przykłady BOM
| Kodowanie | BOM w zapisie szesnastkowym |
|---|---|
| UTF-8 | EF BB BF |
| UTF-16 BE (Big Endian) | FE FF |
| UTF-16 LE (Little Endian) | FF FE |
