Маркер порядку байт
Матеріал з Вікіпедії — вільної енциклопедії.
Ма́ркер поря́дку ба́йт (англ. Byte-order mark, BOM) — символ Юнікоду з кодом U+FEFF («нерозривний пробіл нульової ширини»), що використовується для позначення порядку байт в рядку символів Юнікода, що закодовано в UTF-16 або UTF-32. Ця позначка використовується для позначення того, що текст закодовано в кодування UTF-8, UTF-16 або UTF-32.
В більшості систем кодування, BOM рідко зустрічається в інших контекстах (зазвичай, вона виглядає як послідовність незрозумілих керуючих кодів). Якщо позначка BOM буде помилково інтерпретовано в якості дійсного символу Юнікода, її, взагалі кажучи, видно не буде, оскільки вона є нерозривним пробілом нульової ширини. Використання символа з кодом U+FEFF для інших цілей було скасовано в стандарті Юнікод 3.2 (в якому визначено символ U+2060 для застосування в інших цілях), що дозволило вивільнити U+FEFF для використання виключно в якості позначки порядку байтів BOM.
В UTF-16, BOM (U+FEFF) знаходиться на місці першого символу файла або потоку літер, для того, аби вказати порядок 16-бітних символів у цьому файлі або потоці. Якщо 16-бітні символи записано в прямому порядку (англ. big-endian), позначку BOM буде зчитано як байти 0xFE і 0xFF; якщо порядок байт зворотній, послідовність BOM буде зчитано як 0xFF і 0xFE. Гарантується, що символ Юнікода з кодом U+FFFE ніколи не буде використовуватись для позначення літери в кодуванні Юнікода; із цього випливає, що в контексті Юнікода пара байт 0xFF і 0xFE може означати лише U+FEFF у зворотньому порядку.
Не дивлячись на те, що UTF-8 не має проблем з порядком байт, BOM, у цьому випадку, може використовуватись для позначення тексту в кодуванні UTF-8. Ця позначка лише позначає кодування файла, а не порядок байт в ньому.[1] Достатньо велика кількість програмного забезпечення виробництва Microsoft, (наприклад Notepad) додає позначку BOM. Однак, на Юнікс-подібних системах, застосування позначки BOM може перешкоджати нормальній обробці файлів.
Зміст |
[ред.] Представлення позначки порядку байт за кодуваннями
| Кодування | Представлення (шістнадцяткове) |
|---|---|
| UTF-8 | EF BB BF * |
| UTF-16 Прямий порядок | FE FF |
| UTF-16 Зворотній | FF FE |
| UTF-32 Прямий порядок | 00 00 FE FF |
| UTF-32 Зворотній | FF FE 00 00 |
| SCSU | 0E FE FF |
| UTF-7 | 2B 2F 76 та один із наступних байтів: [ 38 | 39 | 2B | 2F ] † |
| UTF-EBCDIC | DD 73 66 73 |
| BOCU-1 | FB EE 28 |
* В UTF-8, BOM, насправді, використовується лише для позначення кодування тексту. Ця позначка лише позначає кодування файла, а не порядок байтів в ньому.[2]
† В UTF-7, четвертий байт послідовності BOM, перед кодуванням base64 дорівнює 001111xx у двійковій формі, а xx залежить від наступного байту.
[ред.] Примітки
[ред.] Дивіться також
- Unicode
- Universal character set
- UTF-16
- UTF-8
- Endianness (порядок байтів)
[ред.] Зовнішні посилання
- The Unicode Standard, розділ 13 (PDF) (дивіться 13.6 — Specials)
- FAQ — UTF та BOM

