php und utf-8 mit bom
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
arbeiten
byte
code
dank
datei
definition
editor
erzeugen
fehler
file
folgendes problem
format
header
ordern
problem
schnelle antwort
tag
type
umlaut
warnung
-
Hey Leute,
ich habe tag/folgendes problem">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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Richtig, PHP hat Probleeme mit dem BOM. Darum alle Dateien immer im Format "UTF-8 ohne BOM" abspeichern.
Auch der InternetExplorer kommt damit klar. Wenn nicht, liegt es an falscher oder fehlender Charset-Definition im HTML-Header und/oder einem fehlerhaften DocType.
FF -
Danke für deine schnelle Antwort!
Okay, dann wäre es super, wenn du mir hilfst den Fehler in Header oder Doctype zu finden!
Mein HTML Header sieht wie folgt aus:
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> <head>
Beim Doctype sollte es eigentlich keine Probleme geben, es sind utf-8 kodierte Dateien ohne BOM, wie sie Eclipse mit PHP Plugin standardmäßig erstellt...
Ne Idee, wo der Fehler liegt? In FF und allen anderen Browsern wird alles korrekt dargestellt.
Ich hab auch versucht den PHP header "header("Content-Type: text/html; charset=uft8");" mitzuschicken, hat aber leider auch nichts geändert...
Danke,
munich
Edit:
Lösung: Anscheinend reicht dem IE die Definition für UTF8 im XML Header nicht, man muss noch folgendes meta tag mitschicken: <meta http-equiv="content-type" content="text/html; charset=utf-8" />
Beitrag zuletzt geändert: 24.4.2010 17:06:53 von munich -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage