IE, Includes und UTF-8
Ich arbeite bei HTML-Seiten gern mit PHP-Includes, um z. B. den Code für ein Menü zentral bearbeiten zu können. Vorteil: Soll das Menü geändert werden, muss das nur in einer einzigen Datei gemacht werden. Hier ein Beispiel:
<?php include'header.inc'; ?>
<body>
<div id="header1"> </div>
<div id="maincontainer">
<?php include'menu.inc'; ?>
...
Heute habe ich beim Testen einer Website mit Win IE feststellen müssen, dass sich dort zwischen dem Header-Bild und der inkludierten Menüleiste eine Lücke befand, die so natürlich nicht gewollt war – die graue Menüleiste sollte direkt an das obere Bild anschließen:

Im Quelltext zeigte sich ein merkwürdiges Zeichen (hier blau markiert), das eindeutig für diese Lücke, die in anderen Browsern nicht auftrat, verantwortlich war:

Nach ca. drei Stunden Rumgefrickel habe ich schließlich herausgefunden, wie die Lücke verschwindet: Speichere ich die Datei menu.inc UTF-8 kodiert, taucht das Zeichen auf und verursacht die Lücke. Speichere ich die Datei mit einer beliebigen anderen Zeichenkodierung (z. B. Mac OS Roman oder ISO Latin 1), wird sie ohne Sonderzeichen eingebunden und die Lücke verschwindet. Aber da muss man erst mal drauf kommen …
Ähnliche Beiträge:
Gewitter nee ... Mein Tiger
Kommentare:
Bei den Kommentaren handelt es sich um fremde Inhalte, die sich „esse est percipi“ nicht zueigen macht. Verantwortlich für den Inhalt eines Kommentars ist der jeweilige Verfasser.
Hmm, das ist aber seltsam. Wenn du keinen Browser-spezifischen Code drin hast, müsste der Quellcode eigentlich überall gleich sein. Hast du mal die Datei mit verschiedenen Browsern aufgerufen, abgespeichert und dann mit einem Hex-Editor draufgeschaut?
Ich arbeite durchgängig mit UTF-8 und habe eigentlich noch nie speziell Probleme mit IE gehabt…
Wundert mich auch – haben Sie herausgefunden, wie das Zeichen überhaupt dorthin kam? Mit welchem HTML-Editor arbeiten Sie denn?
Das mysteriöse Zeichen ist vermutlich das (der?) Byte Order Mark (Unicode code point FEFF), mit dem UTF-8 kodierte Dateien oft anfangen. PHP müsste das beim Einfügen des Includes eigentlich rausnehmen.
Mit dem IE habe ich auch schon öfters Probleme. Das ist nichts neues. Bloß dass ich nie weiß warum oder worans liegt.
Jedoch achte ich nicht auf die Kodierung. Was ist denn da genau der Unterschied?
Das liegt, wie Martin richtig bemerkt hat, sicherlich am BOM-Header, der eine UTF-8-Datei als solche markiert.
Bei UltraEdit (bester Windoof-Editor) kannst du in den Optionen einstellen, dass der BOM bei Unicode-Dateien nicht mitgespeichert wird. Das ist zwar eigentlich schlecht (woher soll ein Editor sonst den charset erkennen?), hilft aber bei PHP weiter.
Mit TextMate hatte ich das Problem bisher nicht. kann sein, dass TextMate das anders merkt.
Ja PHP ist schuld :( Alle mal voten ;-)
Ich hatte auch mal Probleme beim erstellen und switchen der Kodierungen, aber nur unter subethaedit, keine (nie) Probleme mit bbedit. (zum Testen von jedit kam ich noch nicht, ist aber ein krasses Teil)
a
Aha, danke Martin. Ich habe natürlich gevotet, aber das mit der Behebung wird sich wohl noch eine Weile hinziehen, wenn dieser Bug schon seit Februar 2003 bekannt ist.
Mein Editor ist übrigens BBEdit in der aktuellsten Version. Andere Editoren hatte ich nicht ausprobiert, aber da wir ja dank Martin wissen, dass es sich um einen PHP Bug handelt, brauche ich das ja auch nicht mehr zu testen.
Jau, das selbe Problem hatte ich auch schon öfters…...ist wirklich nervig, weil man daran zu letzt denkt.
Bei mir wurden Leerzeichen im Code vereinzelt falsch gespeichert weswegen Codeteile nicht funktionierten.
So überprüft man wie blöde den Code, obwohl der prima ist….
Jetzt gilt es, auf PHP 6 zu warten :(
Kommentar schreiben:
FAQ (Häufig gestellte Fragen)
Kommentare:
- Michael Preidel zu Harbor – Sicherer Hafen [Testflight]
- Henning zu Harbor – Sicherer Hafen [Testflight]
- Michael Preidel zu Harbor – Sicherer Hafen [Testflight]
- Michael Preidel zu Harbor – Sicherer Hafen [Testflight]
- Mesrop zu Harbor – Sicherer Hafen [Testflight]
- Michael Preidel zu Hopper 1.0b7 (Update: 1.0b9)
Schlagwörter
