PHP: UTF-8, BOM, HTML/CSS-Fehler

(Kommentare: 2)

Hatte bis eben Probleme bei der HTML-Ausgabe eines selbst geschriebenen Typolight-Moduls (jetzt Contao): Der Artikel bzw. das Content-Element mit seiner H1-Überschrift im main-Container wurde auf Teufel komm raus um eine Zeile nach unten verschoben. Dachte, ich hätte irgendeine CSS-Eigenschaft, irgendeinen Style für das Modul-DIV übersehen, der noch eine top-margin einbaut oder was, aber das war's nicht. Es war das BOM...

Der Fehler: das Template war aus Versehen im Format "UFT-8" un nicht "UTF-8 ohne BOM" gespeichert. PHP sendet dieses (zunächst/scheinbar) unsichtbare "Byte Order Mark" am Beginn der Datei an den Browser, der das offenbar als Whitespace mit Zeilenumbruch interpretiert.

Firefox zeigte im Firebug zwar eine Leerzeile, aber da war mir noch nicht klar, wo die herkommt. Bei den Entwicklertools vom IE 8 waren dann komische Zeichen zu sehen, so kam ich drauf... Also schnell im Editor nach "UTF-8 ohne BOM" konvertiert (z.B. Notepad++) und dann ging's.


Mehr Infos zu BOM z.B. bei wikipedia (BOM) oder beim W3C (Darstellungsprobleme durch das UTF-8-BOM).

Das Problem mit dem BOM kann auch zu der folgenden Meldung führen:

"Warning: Cannot modify header information - headers already sent by (output started at C:\project\wwwroot\myscript.php:1) in C:\project\wwwroot\someotherscript.php  on line 174"

Nämlich dann, wenn irgendeine Klassen- oder Konfigurations-Datei mit BOM abgespeichert ist, diese Datei eingelesen wird, das BOM als Ausgabe produziert und die PHP-Anwendung dann noch versucht, etwas in den HTTP-Header hineinzuschreiben.


Zurück

Kommentare

Kommentar von Marcus Lelle |

Hallo Ingmar,
da suche ich, weil ich in einer Contao-Seite komische Zeichen sehe (nur im Firefox und IE) und finde Deine Seite. Geiler Zufall.

Gruß Marcus

Kommentar von taruhan bola kita |

You Made A Number Of Fine Points There. I Did A Search On The Matter And Found Most Folks Will Have The Same Opinion With Your Blog. <a href=http://taruhanbolakita.com/>taruhan bola kita</a>

Einen Kommentar schreiben