Ма́ркер поря́дку ба́йтів (англ. 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, Інтернет
Ma rker porya dku ba jtiv angl Byte order mark BOM simvol Yunikodu z kodom U FEFF nerozrivnij probil nulovoyi shirini sho vikoristovuyetsya dlya poznachennya poryadku bajtiv v ryadku simvoliv Yunikoda sho zakodovano v UTF 16 abo UTF 32 Cya poznachka vikoristovuyetsya dlya poznachennya togo sho tekst maye koduvannya UTF 8 UTF 16 abo UTF 32 V bilshosti sistem koduvannya BOM ridko zustrichayetsya v inshih kontekstah zazvichaj vona viglyadaye yak poslidovnist nezrozumilih keruyuchih kodiv Yaksho poznachku BOM bude pomilkovo interpretovano yak dijsnij simvol Yunikoda yiyi vzagali kazhuchi vidno ne bude oskilki vona ye nerozrivnim probilom nulovoyi shirini Vikoristannya simvolu z kodom U FEFF dlya inshih cilej bulo skasovano v standarti Yunikod 3 2 v yakomu viznacheno simvol U 2060 dlya zastosuvannya v inshih cilyah sho dozvolilo vivilniti U FEFF dlya vikoristannya viklyuchno yak poznachki poryadku bajtiv BOM V UTF 16 BOM U FEFF stoyit na misci pershogo simvolu fajla abo potoku liter dlya togo abi vkazati poryadok 16 bitnih simvoliv u comu fajli abo potoci Yaksho 16 bitni simvoli zapisano v pryamomu poryadku angl big endian poznachku BOM bude zchitano yak bajti 0xFE i 0xFF yaksho poryadok bajt zvorotnij poslidovnist BOM bude zchitano yak 0xFF i 0xFE Garantuyetsya sho simvol Yunikoda z kodom U FFFE nikoli ne bude vikoristovuvatis dlya poznachennya literi v koduvanni Yunikoda iz cogo viplivaye sho v konteksti Yunikoda para bajt 0xFF i 0xFE mozhe oznachati lishe U FEFF u zvorotnomu poryadku Ne zvazhayuchi na te sho UTF 8 ne maye problem z poryadkom bajtiv BOM u comu vipadku mozhe vikoristovuvatis dlya poznachennya tekstu v koduvanni UTF 8 Cya poznachka lishe poznachaye koduvannya fajla a ne poryadok bajt v nomu Dostatno velika kilkist programnogo zabezpechennya virobnictva Microsoft napriklad bloknot dodaye poznachku BOM Odnak na Yuniks podibnih sistemah zastosuvannya poznachki BOM mozhe pereshkodzhati normalnij obrobci fajliv Predstavlennya poznachki poryadku bajt za koduvannyamiKoduvannya Predstavlennya shistnadcyatkove UTF 8 EF BB BF UTF 16 Pryamij poryadok FE FFUTF 16 Zvorotnij FF FEUTF 32 Pryamij poryadok 00 00 FE FFUTF 32 Zvorotnij FF FE 00 000E FE FF2B 2F 76 ta odin iz nastupnih bajtiv 38 39 2B 2F DD 73 66 73FB EE 28 V UTF 8 BOM naspravdi vikoristovuyetsya lishe dlya poznachennya koduvannya tekstu Cya poznachka lishe poznachaye koduvannya fajla a ne poryadok bajtiv v nomu V UTF 7 chetvertij bajt poslidovnosti BOM pered koduvannyam base64 dorivnyuye 001111xx u dvijkovij formi a xx zalezhit vid nastupnogo bajtu BOM PHP Apache ta Unix podibni OSPri vikoristanni UTF 8 dlya zberigannya php fajliv mozhut viniknuti problemi z zagolovkami yaki vidpravlyaye httpd Oskilki BOM fizichno znahoditsya do lt php to vidpravlyayetsya pershim sho mozhe prizvesti do nemozhlivosti dodannya inshih zagolovkiv vklyuchayuchi cookies Shob cogo uniknuti zberigajte php fajli v koduvanni UTF 8 bez BOM Napriklad u Notepad Koduvannya Peretvoriti v UTF 8 bez BOM Opciyi Nalashtuvannya Stvoriti dokument Koduvannya UTF 8 bez mitki BOM PrimitkiFAQ UTF 8 UTF 16 UTF 32 amp BOM 3 veresnya 2012 u Wayback Machine angl Div takozhUnicode UTF 32 UTF 16 UTF 8 Endianness poryadok bajtiv PosilannyaThe Unicode Standard rozdil 13 PDF 12 lipnya 2006 u Wayback Machine divitsya 13 6 Specials FAQ UTF ta BOM 10 travnya 2009 u Wayback Machine