Nein, das ist im HTML nicht möglich. Der Antwortheader des Servers hat Vorrang vor dem Meta-Tag des Dokuments. Wie in 5.2.2 angegeben. Angeben der Zeichenkodierung - HTML 4.01 Spezifikation :
Zusammenfassend müssen konforme Benutzeragenten bei der Bestimmung der Zeichenkodierung eines Dokuments (von der höchsten zur niedrigsten Priorität) die folgenden Prioritäten beachten:
- Ein HTTP-Parameter "Zeichensatz" in einem Feld "Inhaltstyp".
- Eine META-Deklaration mit "http-equiv" auf "Content-Type" und einem Wert für "charset".
- Das Zeichensatzattribut, das für ein Element festgelegt wurde, das eine externe Ressource bezeichnet.
Dies erfordert also eine Konfiguration auf der Serverseite. Im weiteren Verlauf des Kapitels:
Benutzeragenten bieten möglicherweise einen Mechanismus, mit dem Benutzer falsche "Zeichensatz" -Informationen überschreiben können. Wenn ein Benutzeragent einen solchen Mechanismus anbietet, sollte er ihn nur zum Durchsuchen und nicht zum Bearbeiten anbieten, um die Erstellung von Webseiten zu vermeiden, die mit einem falschen "Zeichensatz" -Parameter gekennzeichnet sind.
In meinem Fall enthält der Content-Type- Header des Servers den richtigen MIME-Typ, aber den falschen Zeichensatz .
Wie sich herausstellte, hatte meine Apache-httpd-Konfiguration die Option AddDefaultCharset
zum Hinzufügen des ; charset=ISO-8859-1
Teils aktiviert . Platzieren Sie .htaccess
die folgende Zeile im Stammverzeichnis der Website :
AddDefaultCharset Off
Die Zeichensatzinformationen wurden entfernt:
$ curl -I http://example.com/file.html
HTTP/1.1 200 OK
Date: Fri, 19 Oct 2012 15:07:52 GMT
...
Content-Type: text/html
(siehe letzte Zeile, kein ; charset=...
Teil). Dies in Kombination mit dem HTML-Meta-Tag löst aus, dass die Browser-Heuristik den Zeichensatz vom Meta-Tag übernimmt . Die Website ist ordnungsgemäß dekodiert.
Getestet mit:
- Google Chrome v. 22.0.1229.94
- Firefox v. 16.0.1
- Lynx Version 2.8.7rel.1 (05. Juli 2009)
Diese drei Browser hatten Probleme mit der ursprünglichen Konfiguration und funktionieren jetzt (alle unter Fedora 17).
- Opera 12.02
- Internet Explorer 6 (Win XP SP3)
Hatte das Problem überhaupt nicht. Beide bevorzugten UTF-8 aus dem Meta-Tag gegenüber der ISO-8859-1- Einstellung vom Server.
Unterstützt UTF-8 nicht und wählt daher immer Western (Latin1), unabhängig von der Servereinstellung und dem Meta-Tag.