Sari la conținut

BOM

De la Wikipedia, enciclopedia liberă

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.

Dacă 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.

Î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.

Î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.

Deș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

[modificare | modificare sursă]

Tabelul 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

2B 2F 76 39
2B 2F 76 2B
2B 2F 76 2F
2B 2F 76 38 2D

43 47 118 56

43 47 118 57
43 47 118 43
43 47 118 47
43 47 118 56 45

+/v8

+/v9
+/v+
+/v/
+/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