nie bardzo rozumiem po co BOM...
header('Content-Type: text/html; charset=UTF-8'); nie załatwia sprawy??
Edit: Znaczy jak bom to chyba utf-16
Edit2: Po przemyśleniu tytułu tematu

To ta definicja w header powinna Ci wystarczyć, a plik zapisuj bez bom, bo bom zawsze jest umieszczany na początku pliku więc jeszcze przed <?php