Was bedeutet, den charset in den HTTP-Header zu schreiben, könnte ich hierzu bitte ein Beispiel haben?
Da gibt es für die .htaccess verschiedene Anweisungen und ob das dann geht, das sieht man zum Beispiel am Websniffer. So kann ich meine Webseite auch über den Sniffer aufrufen. Das kann ich natürlich nicht nur mit der html resp. der php-Seite tun, sondern auch mit der CSS-Datei und der Sniffer sagt mir dann mit der Zeile "Content-Type: text/css; charset=utf-8" dass die Seite in utf-8 ausgeliefert wird.
Eine solche Auslieferung - also eine Info über die Seite bevor sie gesendet wird - ist wesentlich aussagekräftiger als ein Metatag oder irgend was anderes. Der Browser stellt diesen Wert automatisch ein, ohne weitere Prüfungen. Der Seitenaufbau ist schneller usw.
Allgemein reicht
AddDefaultCharset utf-8
Aber für die css braucht man noch:
AddType 'text/css; charset=utf-8' .css
Im übrigen kann man damit auch prüfen, ob die Datei gezippt wird, also komprimiert ausgeliefert wird. Das reduziert die Datenmenge und macht auch den Seitenaufbau schneller -> Siehe: Page-Speed-Probleme mit CSS-Dateien von Textpattern
Also mit der .htaccess und einem Sniffer kann man viel verbessern an seiner Seite.
Und was ist ein BOM?
Die ersten beiden Bytes in der utf-8 Datei können diese als solche markieren. Das ist eine Info, die einem Editor sagt: Hier kommt utf-8. Im Web sollte man das nicht verwenden. Es ist jedenfalls nach meinen Infos kein wirklicher Standard.