<?php
header("Vary: Accept");
$xhtml=stristr($_SERVER["HTTP_ACCEPT"], "application/xhtml+xml") || stristr($_SERVER["HTTP_USER_AGENT"],"W3C_Validator");
if($xhtml)
{
header("Content-Type: application/xhtml+xml; charset=utf-8");
}
else
{
header("Content-Type: text/html; charset=utf-8");
}
session_start();
ini_set("url_rewriter.tags","a=href,area=href,frame=src,input=src,fieldset=");
if ($xhtml)
{
echo("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>\n");
}
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
<?php
if ($xhtml)
{
echo ' <meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />'
}
else
{
echo ' <meta http-equiv="content-type" content="text/html; charset=utf-8" />';
}
?>
...
Alles anzeigen
So hast du auf jeden erdenkliche Art das Charset übermittelt.
Und sendest allen Browsern die xhtml unterstützen auf jede erdenkliche Weise den Conten-Type von xhtml.
Den anderen Browsern, die es nicht unterstützen (IE) wird der Conten-Type text/html übersendet.
Außerdem solltest du in deinem Editor (z.B. Notepad ++) jede Datei zu UTF-8 konvertieren, damit nicht der Sever sagt: "Ich schick dir jez was in UTF-8" und es ist gar nicht UTF-8 konvertiert.
Ich hatte dabei öfters das Problem, dass dann aber wenn man mehrere dateien vor dem Doctype includiert der irgendwie an den Anfang oda das Ende der Dateien ein unsichtbares Zeichen schmuggelt, weswegen sich der Browser nachher beschwert weil der Doctype nicht ganz zu Anfang steht.
Deswegen habe ich die Dateien alle in UTF-8 ohne DOM (was genau das bedeutet keine Ahnung) konvertiert.
Damit hast du jedes Problem auf der Seite der Zeichenkodierung und Formatierung ausgeschlossen.