it-swarm.com.de

Standardkodierung vs. vom Inhaltstyp angegebene Kodierung

Wir haben eine Website (www.semanticdesigns.com), die eine Standardcodierung von ISO-8859-1 liefert. Die Seiten sind geschrieben, raten Sie mal, ASCII meist mit einigen ISO-8859-1-Zeichen.

Wir haben ein paar Beispielverzeichnisse, in denen die Seiten unter diesem Verzeichnis tatsächlich UTF-8-codiert sind. (http://www.semanticdesigns.com/Products/Formatters/JavaHTMLJunit/index.html) Diese werden in IE8 und IE9 einwandfrei angezeigt, aber FireFox ist verwirrt und zeigt nur die Stücklistenzeichen an

 " "

Nach meinem Verständnis des HTML-Standards müssen wir diesen Seiten ein Meta-Tag hinzufügen:

 <meta http-equiv="content-type" content="text/html;charset=UTF-8"></meta>

Diese Seiten werden automatisch generiert, wenn dies nicht offensichtlich ist. Dies ist also eine einfache Änderung. Ich habe versucht, das von Hand zu patchen, aber es scheint keine Auswirkung auf FireFox zu haben.

Wie entscheidet der Browser tatsächlich, welche Codierung verwendet wird? Die Standardeinstellung, die vom Server bereitgestellt wird? Oder was ist im Meta-Tag? Vorschläge, wie Sie dieses Problem lösen können, ohne die Site-Standardeinstellungen zu ändern?

1
Ira Baxter

Der vom Webserver im HTTP-Header angegebene Zeichensatz hat Priorität .

Es gibt einige Lösungen für Ihre Probleme:

  • Weist den Webserver an, einen anderen Header für Dateien in einigen Verzeichnissen auszugeben (verwenden Sie im Kontext die AddCharset-Direktiven von AddDefaultCharset)
  • Konvertiere alles in UTF-8 und verwende nur diesen Zeichensatz
  • Konvertieren Sie Ihre UTF-8-codierten Seiten mit HTML-Entities in ISO-8859-1 (ich weiß nicht, ob es in JavaDoc einen Parameter gibt, der dies erlaubt)
1
jcisio

soweit ich weiß, wird das Meta-Tag (<meta>) in Firefox völlig ignoriert

die korrekte Art, einen Zeichensatz anzugeben, ist das Senden des http-Headers "Content-type" und nicht des Metatags "html" (der ohnehin den gleichen Wert wie der http-Wert haben sollte).

die Regel, nach der Firefox die Display-Codierung festlegt, lautet:

Inhaltstyp: Text/HTML; Zeichensatz = UTF-8

wenn Sie Apache verwenden, versuchen Sie ( http://httpd.Apache.org/docs/2.0/mod/core.html#page-header )

AddDefaultCharset UTF-8

wenn Sie PHP verwenden, können Sie auch

header("Content-type: text/html;charset=UTF-8");

wenn Sie einen besseren Überblick über die Header des http-Protokolls benötigen, können Sie https://addons.mozilla.org/it/firefox/addon/live-http-headers/ herunterladen alle in http-Anfragen und http-Antworten enthaltenen Informationen

hoffe das hilft! Fühlen Sie sich frei, mein Englisch zu korrigieren.

0
user12370