BOM
Marcajul de ordine a octeților (în engleză byte order mark, prescurtat BOM) este un caracter Unicode, cu codul U+FEFF byte order mark (BOM), a cărui apariție la începutul unui text pot semnala mai multe lucruri pentru programul consumator de text:[1]
- Ce ordine a octeților este folosită pentru stocarea textului;
- Faptul că textul este Unicode, cu un nivel ridicat de încredere;
- În care din codările Unicode este codat textul.
Folosirea BOM este opțională, și, dacă este folosit, ar trebui să apară doar la începutul textului.
Caracterele Unicode pot fi codificate ca întregi pe 8, 16 sau 32 de biți. Pentru reprezentările pe 16 și 32 de biți, un computer care primește textul trebuie să știe ordinea octeților. Pentru că BOM însuși este codificat în aceeași schemă ca și restul documentului, dar are o valoare cunoscută, consumatorul textului poate examina primii octeți pentru a determina codarea. BOM dă, astfel, softului care a produs textul un mod de a face cunoscută ordinea octeților fără a fi necesare alte metadate.
Odată ce computerul a parsat fluxul de text, este liber să proceseze caracterele în ordinea dorită și nu mai are nevoie de BOM. Prin urmare, necesitatea acestui caracter apare în contextul transmiterii unui text și nu în timpul procesării textului pe un anume mediu.
Utilizare
modificareDacă acest caracter apare în mijlocul unui flux de date, standardul Unicode spune că ar trebui să fie interpretat ca un "spațiu fix de lungime zero" (zero-width non-breaking space, caracter care inhibă trecerea pe o linie nouă între cuvinte). În Unicode 3.2, această utilizare este învechită în favoarea caracterului "Word Joiner", U+2060.[1] Acest lucru permite ca U+FEFF să fie folosit doar pentru ordinea octeților.
UTF-8
modificareÎn UTF-8 reprezentarea BOM este secvența de octeți 0xEF,0xBB,0xBF
. Un editor de text sau web browser care interpretează textul ca ISO-8859-1 sau CP1252 va afișa caractere ï"¿
pentru a reprezenta acest caracter.
UTF-16
modificareÎn UTF-16, un BOM (U+FEFF
) pot fi introdus ca primul caracter dintr-un fișier sau flux de caractere pentru a indica ordinea octeților din toate grupurile de 16 biți din textul respectiv. Dacă se face o încercare de a citi acest flux cu ordinea greșită a octeților, va fi citit caracterul U+FFFE
, care este definit de către Unicode ca un "non caracter" care nu ar trebui să apară în text.
UTF-32
modificareDeși un BOM ar putea fi utilizat cu UTF-32, această codare este rareori folosită pentru transmisie. În caz contrar sunt aplicabile aceleași reguli de la UTF-16.
Reprezentările octeților în funcție de codare
modificareTabelul de mai jos ilustrează cum sunt reprezentate caracterele BOM ca secvențe de octeți și modul în care acestea ar putea să apară într-un editor de text care folosește codarea CP1252:
Codare | Reprezentare (hexazecimală) | Reprezentare (zecimală) | Octeții în CP1252 |
---|---|---|---|
UTF-8 | EF BB BF
|
239 187 191
|

|
UTF-16 (BE) | FE FF
|
254 255
|
þÿ
|
UTF-16 (LE) | FF FE
|
255 254
|
ÿþ
|
UTF-32 (BE) | 00 00 FE FF
|
0 0 254 255
|
␀␀þÿ (␀ este caracterul ASCII null)
|
UTF-32 (LE) | FF FE 00 00
|
255 254 0 0
|
ÿþ␀␀ (␀ este caracterul ASCII null)
|
UTF-7 | 2B 2F 76 38
|
43 47 118 56
|
+/v8
|
UTF-1 | F7 64 4C
|
247 100 76
|
÷dL
|
UTF-EBCDIC | DD 73 66 73
|
221 115 102 115
|
Ýsfs
|
SCSU | 0E FE FF [t 4]
|
14 254 255
|
␎þÿ (␎ reprezintă caracterul ASCII "shift out")
|
BOCU-1 | FB EE 28
|
251 238 40
|
ûî(
|
GB-18030 | 84 31 95 33
|
132 49 149 51
|
„1•3
|