BOM is a Unicode standard. Without BOM, applications have to waste resources trying to figure character encoding. Here are some FAQs about BOM:
http://www.unicode.org/faq/utf_bom.html#22
I know that. FAQ more or less confirms what I've said - BOM in UTF-8 is "Microsoft conventions for .txt files" and it may cause trouble with some protocols.
Additionally BOM on network may be prohibited in some cases:
"Where the precise type of the data stream is known (...) a BOM must not be used."
When you send your files with Content-Type: text/html; charset: UTF-8, BOM becomes prohibited.
The reason PHP breaks is because PHP does not support Unicode.
Unfortunately there are many applications that require certain characters at the very beginning of file, like "<?php", instead of "[BOM]<?php".
-- regards, Kornel Lesiński
****************************************************** The discussion list for http://webstandardsgroup.org/
See http://webstandardsgroup.org/mail/guidelines.cfm for some hints on posting to the list & getting help ******************************************************
