PHP und utf-8 mit bom

Hey Leute,
ich habe folgendes Problem und hoffe ihr könnt mir weiterhelfen:
Ich erstelle meine Webseiten mit Eclipse utf-8 kodiert unter Ubuntu Linux. Linux verwendet keinen Byte Order Marker, diesen braucht der Internet Explorer aber anscheinend bei utf-8 Dateien, um die Umlaute korrekt darstellen zu können. Files mit BOM kann ich erzeugen, indem ich meine Dateien ganz normal in Eclipse unter Linux schreibe, sie dann in Windows mit dem Editor öffne und mit speichern unter als utf-8 kodiertes File abspeichere. Wenn ich die Datei nun auf den Server packe und mit dem IE ansehe werden die Umlaute korrekt dargestellt, was vorher mit den Files direkt aus Eclipse nicht der Fall war. Dafür bekomme ich jetzt die Warnung “Cannot send session cache limiter - headers already sent”, weil PHP mein, dass etwas vor dem <?php steht…

Es ist ja beim BOM so, dass ein paar Byte an den Anfang der Datei geschrieben werden, diese sollten eigentlich im weiteren ignoriert werden, was php aber anscheinend nicht tut…
Ich kann also entweder ohne BOM arbeiten, wobei der IE die Umlaute dann nicht darstellt oder Dateien mit BOM verwenden, die Umlaute sehen, aber dafür diese Fehlermeldung bekommen…

Kann mir irgendwer weiterhelfen, wie ich PHP dazu bringe den BOM als das zu behandeln was er ist, als Marker und im folgenden dann zu ignorieren? Oder habt ihr eine ganz andere Lösung? Vielleicht auch einen Editor, mit dem ich unter Ubuntu arbeiten kann und mit dem es wie auch immer keine Probleme gibt?

Danke schonmal,
munich

Das mit dem BOM ist so eine Sache…

Versuch doch mal folgendes bei den headern mit zu senden

Hey,
danke für deine Antwort! Hatte leider keinerlei Effekt…
Auch im HTML Code habe ich natürlich UTF-8 als Kodierung angegeben…
Ich sitze wirklich schon ewig an diesem Problem und suche eigentlich einfach nur mal eine Lösung, mit der ich unter Ubuntu meine Webseiten entwickeln kann, ohne mit Umlauten Probleme zu haben, also wenn da jemand noch eine Alternative hat auch immer her damit.
Danke,
munich

Lösung: Anscheinend reicht dem IE die Definition für UTF8 im XML Header nicht, man muss noch folgendes meta tag mitschicken:

In dieser Pauschalität eine unsinnige und falsche Aussage.

Auch Unsinn.

Einer der grossen Nachteile der Verwendung einer BOM in Verbindung mit PHP.

Mache die Angaben an den dafür vorgesehenen Stellen.

Im HTTP-Kontext ist das als allererstes eine Angabe im Content-Type-Header.
Die kann man entweder wie gezeigt per header machen (deine „funzt nich“-Antwort auf diesen Vorschlag ist auch Murks - wenn damit kein Effekt erzielt wird, sollte man untersuchen, warum), oder bspw. auch mittels der Konfigurationsoption default_charset für alle von PHP dynamisch erzeugten Ressourcen per Default vorgeben.

Das täte jedenfalls auf grobe Fehler im MSIE hinweisen.

BOM ist jedenfalls bei UTF-8 überflüssig, bei UTF-16 nicht.
Insbesondere bei älteren browser-Versionen kann das zu
fehlerhaften Anzeigen führen oder bei XML-Dokumenten auch
zu einer Fehlermeldung statt einer Anzeige des Inhaltes.

Wenn per HTTP eine Kodierungsangabe gesendet wird, gilt die,
egal, was sonstwo behauptet wird. Sollte dir da beim MSIE
definitiv ein Fehler auffallen, solltest du an microsoft dringend
einen Fehlerbericht schicken ;o)

XML-header? Meinsts du die XML-Verarbeitungsanweisung, die
man bei XML-Dokumenten gleich am Anfang der Datei findet?
Die Angabe ist relevant, wenn keine Information vom server
erfolgt. Andere Angaben im Dokument sind dann zu ignorieren
(macht der browser das nicht - Fehlerbericht einschicken).
Wenn es bei XML-Dokumenten keine andere Angabe vorliegt,
ist ohnehin UTF-8 zu wählen (wenn nicht - Fehlerbericht etc ;o)

Anders liegt der Fall allerdings, wenn man XHTML fehlerhaft als
text/html ausliefern läßt, das ist ein Fehler des Autors und die
Verarbeitungsanweisung ist belanglos. Gibt es das meta-Element
nicht, wird als Kodierung traditionall ISO-8859-1 angenommen.
Neuerdings auch immer öfter eine ähnliche Kodierung von
microsoft.
Solch ein Autorenfehler könnte bei dir eventuell das Problem
verursachen, solltest du wirklich XHTML als text/html
ausliefern, etwa weil der MSIE gar kein XHTML interpretieren
kann. In dem Falle ist es auf jeden Fall dringend zu empfehlen,
den server die passende Kodierung senden zu lassen (PHP oder
.htaccess).