Viac na
Aký je rozdiel medzi UTF-8 a UTF-8 bez BOM?
Čím sa líši UTF-8 od UTF-8 bez BOM? Ktorý je lepší?
778
3
Čím sa líši UTF-8 od UTF-8 bez BOM? Ktorý je lepší?
UTF-8 BOM je postupnosť bajtov na začiatku textového toku (EF BB BF), ktorá umožňuje čítačke spoľahlivejšie odhadnúť, či je súbor kódovaný v UTF-8.
Za normálnych okolností sa BOM používa na signalizáciu endianity kódovania, ale keďže endianita je pre UTF-8 irelevantná, BOM nie je potrebný.
Podľa normy Unicode sa BOM pre súbory UTF-8 neodporúča:
2.6 Schémy kódovania
UTF-8 bez BOM nemá BOM, čo ho nerobí lepším ako UTF-8 s BOM, okrem prípadov, keď spotrebiteľ súboru potrebuje vedieť (alebo by mal prospech z toho, keby vedel), či je súbor kódovaný v UTF-8 alebo nie.
BOM je zvyčajne užitočný na určenie endianity kódovania, čo sa vo väčšine prípadov použitia nevyžaduje.
Okrem toho môže byť BOM zbytočným šumom/námahou pre tých spotrebiteľov, ktorí ho nepoznajú alebo sa oň nezaujímajú, a môže viesť k zmätku používateľa.
Z adresy http://en.wikipedia.org/wiki/Byte-order_mark:
Vždy používajte BOM vo svojom súbore, čím zabezpečíte, že sa vždy správne otvorí v editore, ktorý podporuje UTF-8 a BOM.
Môj skutočný problém s absenciou BOM je nasledujúci. Predpokladajme, že máme súbor, ktorý obsahuje:
Bez BOM sa vo väčšine editorov otvorí ako ANSI. Takže iný používateľ tento súbor otvorí a pridá do neho niektoré natívne znaky, napr:
Ups... Teraz je súbor stále v ANSI a hádajte čo, "αβγ" nezaberá 6 bajtov, ale 3. To nie je UTF-8 a spôsobuje to ďalšie problémy neskôr vo vývojovom reťazci.