Tavusekvenssimerkki tai tavujärjestysmerkki ( English Byte Order Mark, BOM ) on Unicode -standardin erikoismerkki, joka lisätään tekstitiedoston tai virran alkuun osoittamaan, että tiedostossa (stream) käytetään Unicodea. osoittavat epäsuorasti koodauksen ja tavujärjestyksen , jolla Unicode-merkit koodattiin. Tämän merkin Unicode-numero on U+FEFF. Tämän merkin käyttö Unicode-määrittelyn mukaan on valinnaista, mutta sitä käytetään laajalti, koska sen avulla on helppo välttää tekstitiedon virheellinen dekoodaus.
Unicode-määrityksen mukaan merkki voi näkyä vain tiedoston tai virran alussa. Jos merkki U+FEFFesiintyy tietovirran keskellä, sen täytyy tulkitaan "nollaleveäksi rikkoutumattomaksi välilyönniksi" (olennaisesti ei-näytettävä ja mitään muuttava merkki). Kuitenkin suurin osa[ kuinka paljon? ] muut selaimet kuin Operan versiot 12 ja sitä vanhemmat käsittelevät asiakirjan keskellä olevaa tuoteluetteloa koko rivin varaavana merkinä ja luovat sitten rivinvaihdon [1] .
Unicodessa katkeamattomalle nollaleveydelle välilyönnille on myös erillinen erikoismerkki - U+2060, jota suositellaan käytettäväksi sellaisenaan, ja tavusekvenssimerkkiä U+FEFFsuositellaan käytettäväksi vain sille tarkoitettuun tarkoitukseen.
Jos vastaanottava ohjelma tietää Unicode-merkkien esitysmuodon tarkasti etukäteen, Unicode-standardin mukaan merkkiä ei tule asettaa. Ja jos muoto ilmoitetaan toisella tavalla (esimerkiksi MIME otsikkokentässä Content-Type), merkin ei ole tarkoitus olla standardin mukaan asetettuna.
Tapa, jolla tiedoston tai virran alussa oleva tavusekvenssimerkki on koodattu, voidaan helposti määrittää koodaus ja tavujärjestys, jota käytetään Unicode-merkkien koodaamiseen koko tiedostossa tai virrassa. Tämä seikka oli tärkein syy tavusekvenssimarkkerin laajaan käyttöön.
Koodaus | Tavusekvenssimerkkien esitys | Merkin esitys virheellisen dekoodauksen tapauksessa eri koodauksella | |||||
---|---|---|---|---|---|---|---|
Hex-koodi | Desimaalikoodi | ISO-8859-1 | KOI8-R | CP1251 | CP866 | kommentti | |
UTF-8 [t1] | EF BB BF | 239 187 191 |  | О╩© | п»ї | я╗┐ | |
UTF-16 ( BE ) | FE FF | 254 255 | þÿ | ЧЪ | юя | ■ | rako - rikkoutumaton |
UTF-16 ( LE ) | FF FE | 255 254 | ÿþ | ЪЧ | яю | ■ | |
UTF-32 (BE) | 00 00 FE FF | 0 0 254 255 | ␀␀þÿ | ␀␀ЧЪ | ␀␀юя | ␀␀■ | ␀ - NUL , välilyönti - rikkoutumaton |
UTF-32 (LE) | FF FE 00 00 | 255 254 0 0 | ÿþ␀␀ | ЪЧ␀␀ | яю␀␀ | ■␀␀ | |
UTF-7 [t1] | 2B 2F 76 38 2B 2F 76 39 2B 2F 76 2B 2B 2F 76 2F[t2] |
43 47 118 56 43 47 118 57 43 47 118 43 43 47 118 47 |
+/v8 +/v9 +/v+ +/v/ | ||||
UTF-1 [t1] | F7 64 4C | 247 100 76 | ÷dL | ||||
UTF-EBCDIC [t 1] | DD 73 66 73 | 221 115 102 115 | Ýsfs | ||||
SCSU [t1] | 0E FE FF[t3] | 14 254 255 | ␎þÿ | ␎■ | ␎ - esim. Shift Out -symboli, tilaa on katkeamaton | ||
BOCU-1 [t1] | FB EE 28 | 251 238 40 | ûî | √ю( | |||
GB-18030 [t1] | 84 31 95 33 | 132 49 149 51 | �1�3 | Д1Х3 | � — koodit ilman arvoja |
On tapauksia, joissa tavusekvenssimarkkerin käyttöä tulisi välttää sen mukavuudesta huolimatta. Esimerkiksi merkin käyttäminen verkkomalleissa saa aikaan tyhjiä rivejä asiakirjassa, joten on hyvä idea poistaa merkintä verkkoskripteistä ja CSS - tiedostoista. Ja merkinnän esiintyminen PHP - tiedostojen alussa (ennen tunnistetta <?php) aiheuttaa tyhjän merkkijonon lähettämisen asiakkaalle ennen kuin koodi on edes alkanut suorittaa, mikä aiheuttaa epäonnistumisen tapauksissa, joissa HTTP-otsikko tulee lähettää välittömästi asiakasta (esimerkiksi uudelleenohjattaessa pyyntöä). [5] Se voi myös käsitellä json_decoden virheellisesti, jos json kirjoitetaan tiedostoon, jossa on tuoteluettelo.