Es gibt Tage an denen würde ich diese heterogene Linuxwelt gern aus dem Fenster werfen und dann gleichnamiges Betriebssystem direkt hinterher. Auf meinem Normalen Testrechner (FreeBSD 5.4) läuft ein guter alter Apache 1.33 und dieser serviert mir die Webseiten sauber mit dem Charset das ich im Header zu stehen hab.
Da ich gerade meine Seite auf UTF-8 umgestellt habe statt immer ISO-8859-1 zu nutzen brauchte ich also eigentlich nur die XML Headerinformationen der Templates anpassen und alles wäre perfekt, dachte ich. Zuerst wollten aber die Sonderzeichen nicht so recht, das hing aber eher damit zusammen das diese aus einer Datenbank kommen die mit ISO-8859-1 Zeichensatz speichert. Da frag ich nicht lange und lass das ganze einfach nochmal durch den PGP eigenen utf_encoder laufen.
Ging auf meinem Testrechner wunderbar, keine Probleme, also spiel ich das Zeug aufs Livesystem und erhalte keine Sonderzeichen. Nach einer Stunde suchen, googelns und probierens dann die Lösung. Der Apache von SuSE schickt immer ISO-8859-1 als Zeichensatz mit. Das führt dann dazu das die Browser (inkl. dem W3C Checker) das ganze nicht mehr korrekt als UTF-8 erkennen und Fehler produzieren. Abhilfe schafft da nur mit der header Funktion von PHP hart den HTML Charset-Header mitzuschicken, dann geht es.
Danke SuSE für diese grandiose Voreinstellung, da die ganze Welt ISO-8859-1 benutzt!
P.S.: Wenn man einem RSS-Feed einen html header verpasst funktionieren dort eingebettete Stylesheets nicht mehr!