Ма́ркер поря́дку ба́йтів (англ. 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. Ця позначка лише позначає кодування файла, а не порядок байт в ньому. Достатньо велика кількість програмного забезпечення виробництва Microsoft, (наприклад блокнот) додає позначку 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 |
0E FE FF | |
2B 2F 76 та один із наступних байтів: [ 38 | 39 | 2B | 2F ] † | |
DD 73 66 73 | |
FB EE 28 |
* В UTF-8, BOM, насправді, використовується лише для позначення кодування тексту. Ця позначка лише позначає кодування файла, а не порядок байтів в ньому.
† В UTF-7, четвертий байт послідовності BOM, перед кодуванням base64 дорівнює 001111xx у двійковій формі, а xx залежить від наступного байту.
BOM, PHP, Apache та Unix-подібні ОС
При використанні UTF-8 для зберігання php-файлів можуть виникнути проблеми з заголовками які відправляє httpd. Оскільки BOM фізично знаходиться до <?php, то відправляється першим, що може призвести до неможливості додання інших заголовків, включаючи cookies.
Щоб цього уникнути, зберігайте php-файли в кодуванні UTF-8 без BOM (Наприклад, у : Кодування → Перетворити в UTF-8 без BOM; Опції → Налаштування → Створити документ → Кодування: UTF-8 без мітки BOM).
Примітки
- FAQ — UTF-8, UTF-16, UTF-32 & BOM [ 3 вересня 2012 у Wayback Machine.](англ.)
Див. також
- Unicode
- UTF-32
- UTF-16
- UTF-8
- Endianness (порядок байтів)
Посилання
- The Unicode Standard, розділ 13 (PDF) [ 12 липня 2006 у Wayback Machine.] (дивіться 13.6 — Specials)
- FAQ — UTF та BOM [ 10 травня 2009 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет