Důvod pro to není, ale třeba aplikace od Microsoftu ho tam vkládají a používají ho pro automatickou detekci toho, zda je soubor uložený v UTF-8 nebo v nějakém windows-125x kódování.
BOM prece syntaxi neodporuje, navic mam pocit, ze zakladni duvod jeho zavedeni byla interoperabilita, aby bylo mozne urcit endianitu systemu, ktery soubor vygeneroval a spravne ho zpracovat. To predchozi normy neresily.
BOM se začal používat proto, aby bylo možné rozlišit UTF-16LE od UTF-16BE, takže je-li první znak souboru BOM (tedy nedělitelná mezera nulové délky nebo co to bylo původně), lze ho označit za UTF-16 a ten, kdo ho načítá, hned ví, zda je zbytek souboru little endian nebo big endian UTF-16. Před dalším zpracováním by ale měl tento znak vynechat, takže veškerá práce už by měla probíhat bez něj. UTF-8 je ale na endianitě nezávislé, takže neexistuje žádné UTF-8LE a UTF-8BE, ale jen jedno jediné UTF-8, a proto je nesmysl při ukládání v UTF-8 přidávat nějakou značku navíc.
Mohl by mi už konečně sdělit jeden jediný důvod, proč cpát BOM do UTF-8 dokumentu? Já o žádném nevím, dokonce jsem toho názoru, že je zásadní chybou tam BOM dát, ale kdykoli jsem se někoho, kdo použití BOM v UTF-8 považoval za správné, zeptal na důvod, nedočkal jsem se odpovědi. Třeba tentokrát budu úspěšnější…