Charakter encodings im HTML

HTML (yperext arkup anguage) ist im Gebrauch seit 1991 gewesen, aber HTML 4.0 (Dezember 1997) war die erste standardisierte Version, wo internationale Charaktere vernünftig ganze Behandlung gegeben wurden. Wenn ein HTML-Dokument spezielle Charaktere außerhalb der Reihe von Sieben-Bit-ASCII einschließt, lohnt sich es, zwei Absichten zu denken: die Integrität der Information und universale Browser-Anzeige.

Das Spezifizieren der Charakter-Verschlüsselung des Dokumentes

Es gibt mehrere Weisen anzugeben, welche Charakter-Verschlüsselung im Dokument verwendet wird. Erstens kann der Webserver die Charakter-Verschlüsselung oder "" ins Hypertext-Übertragungsprotokoll (HTTP) Kopfball einschließen, der normalerweise wie das aussehen würde:

Zufriedener Typ: Text/HTML; charset=ISO-8859-1

Diese Methode gibt dem HTTP Server eine günstige Weise, die Verschlüsselung des Dokumentes gemäß der zufriedenen Verhandlung zu verändern und ist vorwärts gegangen HTTPd Software kann es wirklich, zum Beispiel Apachen-Modul mod_charset_lite tun.

Für das HTML ist es möglich, diese Information innerhalb des Elements in der Nähe von der Spitze des Dokumentes einzuschließen:

</Quelle>

HTML5 erlaubt auch der folgenden Syntax, genau dasselbe zu bedeuten:

</Quelle>

XHTML Dokumente haben eine dritte Auswahl: Die Charakter-Verschlüsselung über die XML Behauptung wie folgt auszudrücken:

</Quelle>

kann direkt durch einen Browser wie ein gewöhnliches HTML-Anhängsel interpretiert werden, oder es kann durch den HTTP Server verwendet werden, um entsprechende Kopfbälle zu erzeugen, wenn es dem Dokument dient. Die HTTP/1.1 Kopfball-Spezifizierung für ein HTML-Dokument muss eine passende Verschlüsselung im Kopfball des Zufriedenen Typs etikettieren, fehlender Parameter läuft auf Annahme von ISO-8859-1 hinaus (so bietet HTTP/1.1 formell solche Auswahl wie eine unangegebene Charakter-Verschlüsselung nicht an), und diese Spezifizierung das ganze HTML (oder XHTML) meta Element ersetzt. Das kann ein Problem aufwerfen, wenn der Server einen falschen Kopfball erzeugt und man den Zugang oder die Kenntnisse nicht hat, um sie zu ändern.

Als jede dieser Methoden erklären zum Empfänger, wie die Datei, die wird sendet, interpretiert werden sollte, würde es für diese Behauptungen unpassend sein, die wirkliche verwendete Charakter-Verschlüsselung nicht zu vergleichen. Weil ein Server gewöhnlich nicht weiß, wie ein Dokument — besonders verschlüsselt wird, wenn Dokumente auf verschiedenen Plattformen oder in verschiedenen Gebieten geschaffen werden — schließen viele Server einfach keine Verweisung auf "" im Kopfball ein, so das Bilden falscher Versprechungen vermeidend. Jedoch, wenn das Dokument die Verschlüsselung auch nicht angibt, kann das auf die ebenso schlechte Situation hinauslaufen, wo der Benutzeragent mojibake zeigt, weil es nicht herausfinden kann, welche Charakter-Verschlüsselung verwendet wurde. Wegen der weit verbreiteten und beharrlichen Unerfahrenheit von HTTP über das Internet (an seiner Server-Seite), WWW Konsortium, das in der strengen Annäherung von HTTP/1.1 enttäuscht ist, und ermuntert Browser-Entwickler dazu, einige üble Lagen in der Übertretung von RFC 2616 zu verwenden.

Wenn ein Benutzeragent ein Dokument ohne Charakter-Verschlüsselungsinformation liest, kann es zum Verwenden einer anderen Information zurückweichen. Zum Beispiel kann es sich auf die Einstellungen des Benutzers verlassen, die entweder weit Browser oder für ein gegebenes Dokument spezifisch sind, oder es kann eine auf der Sprache des Benutzers gestützte Verzug-Verschlüsselung aufpicken. Für westeuropäische Sprachen ist es typisch und ziemlich sicher, Windows 1252 anzunehmen, das ISO-8859-1 ähnlich ist, aber druckfähige Charaktere im Platz von einigen Kontrollcodes hat. Die Folge, falsch zu wählen, besteht darin, dass Charaktere außerhalb der druckfähigen ASCII-Reihe (32 bis 126) gewöhnlich falsch erscheinen. Das wirft wenige Probleme für englisch sprechende Benutzer auf, aber andere Sprachen regelmäßig — in einigen Fällen, immer — verlangen Charaktere außerhalb dieser Reihe. In CJK Umgebungen, wo es mehreres verschiedenes Mehrbyte encodings im Gebrauch gibt, wird Autoentdeckung auch häufig verwendet. Schließlich erlauben Browser gewöhnlich dem Benutzer, falsches Charset-Etikett manuell ebenso zu überreiten.

Es ist für mehrsprachige Websites und Websites auf Nichtwestsprachen immer üblicher, UTF-8 zu verwenden, der Gebrauch derselben Verschlüsselung für alle Sprachen erlaubt. UTF-16 oder UTF-32, der für alle Sprachen ebenso verwendet werden kann, werden weniger weit verwendet, weil sie härter sein können, auf Programmiersprachen zu behandeln, die eine byteorientierte ASCII Obermenge-Verschlüsselung annehmen, und sie für den Text mit einer hohen Frequenz von ASCII Charakteren weniger effizient sind, die gewöhnlich der Fall für HTML-Dokumente ist.

Die erfolgreiche Betrachtung einer Seite ist nicht notwendigerweise eine Anzeige, dass seine Verschlüsselung richtig angegeben wird. Wenn der Schöpfer und Leser der Seite etwas mit der Plattform spezifische Charakter-Verschlüsselung sowohl annehmen, und der Server sendet keine sich identifizierende Information, dann wird der Leser dennoch die Seite als der beabsichtigte Schöpfer sehen, aber andere Leser auf verschiedenen Plattformen oder mit verschiedenen Muttersprachen werden die Seite, wie beabsichtigt, nicht sehen.

Charakter-Verweisungen

Zusätzlich zum heimischen Charakter encodings können Charaktere auch als Charakter-Verweisungen verschlüsselt werden, die numerische Charakter-Verweisungen (Dezimalzahl oder hexadecimal) oder Charakter-Entitätsverweisungen sein können. Charakter-Entitätsverweisungen werden auch manchmal genannt Entitäten oder HTML-Entitäten für das HTML genannt. Der Gebrauch des HTML von Charakter-Verweisungen ist auf SGML zurückzuführen.

HTML-Charakter-Verweisungen

Numerische Charakter-Verweisungen können im dezimalen Format sein, wo eine variable Zahl von dezimalen Ziffern ist. Ähnlich gibt es ein Hexadecimal-Format, wo eine variable Zahl von hexadecimal Ziffern ist. Charakter-Verweisungen von Hexadecimal sind im HTML gegen den Fall unempfindlich. Zum Beispiel kann der Charakter 'λ' als vertreten werden, oder. Numerische Verweisungen beziehen sich immer auf Codepunkte von Unicode unabhängig von der Verschlüsselung der Seite. Das Verwenden numerischer Verweisungen, die sich auf dauerhaft unbestimmte Charaktere beziehen und Charaktere kontrollieren, wird mit Ausnahme vom linefeed, dem Etikett und den Wagen-Rückcharakteren verboten. D. h. Charaktere im hexadecimal erstreckt sich 00-08, 0B-0C, 0E-1F, 7F, und 80-9F kann in einem HTML-Dokument nicht verwendet werden, nicht sogar durch die Verweisung, so "&amp;#153;" Zum Beispiel, wird nicht erlaubt. Jedoch für die rückwärts gerichtete Vereinbarkeit mit frühen HTML-Autoren und Browsern, die diese Beschränkung ignoriert haben, werden rohe Charaktere und numerische Charakter-Verweisungen in der 80-9F Reihe durch einige Browser als das Darstellen der Charaktere interpretiert, die zu in der Verschlüsselung des Windows 1252 80-9F Bytes kartografisch dargestellt sind.

Charakter-Entitätsverweisungen haben das Format, wo "Name" eine mit dem Fall empfindliche alphanumerische Schnur ist. Zum Beispiel, 'λ' kann auch als in einem HTML-Dokument verschlüsselt werden. Die Charakter-Entitätsverweisungen, und werden im HTML und SGML vorherbestimmt, weil, und bereits verwendet werden, um Preiserhöhung abzugrenzen. Das schließt namentlich XML'S (') Entität nicht ein. Für eine Liste aller genannten HTML-Charakter-Entitätsverweisungen, sieh Liste von XML und HTML-Charakter-Entitätsverweisungen (etwa 250 Einträge).

Der unnötige Gebrauch von HTML-Charakter-Verweisungen kann HTML-Lesbarkeit bedeutsam reduzieren. Wenn die Charakter-Verschlüsselung für eine Webseite passend dann gewählt wird, sind HTML-Charakter-Verweisungen gewöhnlich nur für eine Preiserhöhung erforderlich, die Charaktere abgrenzt, die oben, und für einige spezielle Charaktere erwähnt sind (oder überhaupt nicht wenn geborener Unicode, der wie UTF-8 verschlüsselt, verwendet wird). Jedoch, um HTML-Spritzenangriffe wie Böse Seite Scripting zu verhindern, sollten Sie sehr auf Gebrauch-HTML-Entität achten, die richtig flüchtet. Wenn HTML-Attribute nicht völlig angesetzt werden, dann müssen Sie Entität, whitespace wie Raum, Etikett und andere verschlüsseln. Andere HTML-Zusammenhänge wie javascript, css Stile und URL-ADRESSEN verlangen verschiedene flüchtende Formate. Sieh http://www.owasp.org/index.php/XSS_ (Cross_Site_Scripting) _Prevention_Cheat_Sheet für Details auf jedem der verschiedenen Zusammenhänge.

XML Charakter-Verweisungen

Verschieden vom traditionellen HTML mit seiner großen Reihe von Charakter-Entitätsverweisungen in XML gibt es nur fünf vorherbestimmte Charakter-Entitätsverweisungen. Diese werden verwendet, um Charakteren zu entkommen, die in bestimmten Zusammenhängen empfindliche Preiserhöhung sind:

  •  > (größer - als Zeichen, U+003E)
  •  "(Anführungszeichen, U+0022)
  •  '(Apostroph, U+0027)

Alle anderen Charakter-Entitätsverweisungen müssen definiert werden, bevor sie verwendet werden können. Zum Beispiel wird Gebrauch (der é, lateinischer Kleinbuchstabe E mit dem Akut, U+00E9 in Unicode gibt) in einem XML Dokument einen Fehler erzeugen, wenn die Entität bereits nicht definiert worden ist. XML verlangt auch, dass in hexadecimal numerischen Verweisungen im Kleinbuchstaben sind: zum Beispiel aber nicht. XHTML, der eine XML Anwendung ist, unterstützt den HTML-Entitätssatz zusammen mit den vorherbestimmten Entitäten von XML.

Jedoch sollte Gebrauch in XHTML allgemein aus Vereinbarkeitsgründen vermieden werden. oder kann stattdessen verwendet werden.

hat das spezielle Problem, dass es mit dem Charakter anfängt, entkommen zu werden. Eine einfache Internetsuche findet Tausende von Folgen in HTML-Seiten, für die der Algorithmus, ein Und-Zeichen durch die entsprechende Charakter-Entitätsverweisung zu ersetzen, wahrscheinlich wiederholt angewandt wurde.

Außenverbindungen


Charlemagne / Kohlenstoff nanotube
Impressum & Datenschutz