Čo je BOM?
Značka usporiadania bajtov (BOM), alebo značka usporiadania bajtov, je špeciálna značka vložená do Unicode súboru kódovaného pomocou UTF-8, UTF16 alebo UTF-32 na identifikáciu kódovacieho typu Unicode súboru. Pre UTF-8 nie je potrebný BOM, pretože sa používa na označenie typu kódovania a poradia bajtov (big-endian alebo little-endian) viacbajtového kódovaného súboru. V UTF-8 je počet bitov zakódovaných pre každý znak vyjadrený prvým bajtom a medzi big-endianom a little-endianom nie je rozlíšenie. UTF-8 nevyžaduje BOM, hoci štandard Unicode umožňuje použitie BOM v UTF-8. Preto je štandardnou formou UTF-8 bez BOM a je to hlavne zvyk Microsoftu umiestňovať BOM do súboru UTF-8 (mimochodom: je tiež zvykom Microsoftu volať UTF-16 s BOM "Unicode" bez zachádzania do detailov). Kusovníky sa pripravujú pre UTF-16 a UTF-32 na označenie poradia bajtov. Microsoft používa BOM v UTF-8, pretože umožňuje jasné rozlíšenie medzi UTF-8 a ASCII kódovaním, inak by otvorenie CSV súboru v Exceli mohlo byť nezrozumiteľné. Takýto súbor však môže spôsobiť problémy aj v iných operačných systémoch než Windows. Rozdiel medzi "UTF-8" a "UTF-8 s BOM" je v tom, či BOM existuje alebo nie. To znamená, či je na začiatku súboru U+EFF. Webový kód UTF-8 by nemal používať kusovníky, inak sú chyby bežné. Pri výstupe CSV súboru z http odpovede nie je predvolene zahrnutý, keď je nastavený na utf8 BOM, ale Windows Excel používa BOM na potvrdenie kódovania UTF8 a všetky musia zapísať BOM na začiatok súboru.
Keď prvýkrát vyvíjate generátor Java kódu, umiestnite súbor priamoZápis do súboru UTF-8, ktorý obsahuje tag BOMTo povedie k chybám v balení, a to nasledovne:
Nelegálne postavy: '\ufeff'
Ako môžem použiť .NET / C# na zistenie, či súbor obsahuje tagy BOM? , kód je nasledovný:
Kolegovia, pripojeníPrevádza formát BOM UTF-8 na formát UTF-8 (bez tagov BOM), celý kód je nasledovný:
(Koniec)
|