5 Präsentation des Dokuments in HTML - Format

In diesem Kapitel wird erläutert, wie HTML-Dokumente auf dem Computer und im Internet vertreten.

Abschnitt der Dokumentzeichensatz bezieht sich auf die Frage der abstrakten Symbole, die ein Teil des HTML - Dokuments sein kann. Einige dieser Zeichen sind die lateinischen Buchstaben "A", das kyrillische Buchstaben "I", das chinesische Schriftzeichen für "Wasser" usw.

Abschnitt Zeichencodierung bezieht sich auf die Frage, wie diese Zeichen können in einer Datei oder bei der Übertragung über das Internet dargestellt werden. Da einige Zeichenkodierungen nicht direkt alle Zeichen ein Autor in dem Dokument enthalten können wollen darstellen können, bietet HTML andere Mechanismen, die so genannte Zeichenreferenzen , zu einem beliebigen Zeichen verweisen.

Da die menschliche Sprachen gibt es eine riesige Anzahl von Zeichen und eine Vielzahl von Methoden für ihre Leistung, sollte darauf geachtet werden, dass diese Dokumente von Benutzerprogrammen auf der ganzen Welt verstanden werden könnte.

5.1 Der Dokument - Zeichensatz

Um die Interoperabilität erfordert SGML , dass jede Anwendung (einschließlich HTML) angeben , das Dokument - Zeichensatz. Das Dokument enthält:

  • Repertoire : Eine Reihe von abstrakten Symbole, wie zum Beispiel dem lateinischen Buchstaben "A", das kyrillische Buchstaben "I", das chinesische Schriftzeichen für "Wasser" usw.
  • Codes : Eine Reihe von Integer - Verweise auf das Repertoire von Zeichen.

Jedes SGML-Dokument (einschließlich jedes Dokument HTML) - eine Folge von Zeichen aus dem Repertoire. Computersysteme identifizieren jedes Zeichen durch seinen Code; beispielsweise 65 in den ASCII-Zeichensatz-Codes, 66 und 67 bezeichnen Zeichen 'A', 'B' und 'C' sind.

Der ASCII - Zeichensatz ist für ein globales Informationssystem nicht ausreichend, da das Web, so HTML ein vollständigeres Zeichensatz genannt verwendet Universal Character Set (Universal Character Set - UCS), und definiert in [ISO10646]. Dieser Standard definiert ein Repertoire von Tausenden von Zeichen auf der ganzen Welt verwendet wird.

Zeichensatz, definiert in [ISO10646] - das ist zeichenorientierte entspricht dem Unicode 2.0 Wir tun ( [die UNICODE] ). Beide Standards aktualisiert werden von Zeit zu Zeit aktualisiert mit neuen Charakteren, sollten die Änderungen werden auf den jeweiligen Web-Server zu lernen. In dieser Spezifikation ISO / IEC-10646 oder Unicode implizieren diese gleiche Zeichensatz. Allerdings Unicode HTML - Spezifikation auch in der Diskussion über andere Fragen, wie erwähnt bidirektionalen Text - Algorithmus.

Dokumentzeichensatz ist jedoch nicht ausreichend, um Benutzerprogramme korrekt HTML-Dokumente in einem typischen Austausch interpretieren - codiert als eine Folge von Bytes in einer Datei oder während einer Übertragung über das Netzwerk. Benutzerprogramme müssen auch wissen , die Zeichenkodierung , die verwendet wurde , das Dokument Zeichenstrom in einen Byte - Strom zu transformieren.

5.2 Zeichenkodierung

Zeichenkodierung in dieser Beschreibung haben verschiedene Namen in anderen Spezifikationen (die zu Verwirrung führen kann). Allerdings bedeutet dieser Begriff des Internet über die gleiche Sache. Ein und derselbe Name - "die charset - charset" - ist in den Protokoll - Header verwendet, Attribute und Parameter mit Bezug auf die Zeichen und verwenden die gleichen Werte aus dem [IANA] Registry (für die vollständige Liste zu sehen. [Charsets] ).

"Zeichensatz" -Parameter identifiziert eine Zeichenkodierung, die ein Verfahren zum Umwandeln einer Sequenz von Bytes in eine Folge von Zeichen. Diese Umwandlung passt natürlich in das Schema von Web-Aktivität: Server HTML-Dokumente an Benutzeragenten als ein Strom von Bytes zu senden; Benutzerprogramme interpretieren sie als eine Folge von Zeichen. Transformationsverfahren kann von einem einfachen 00.59 Korrespondenz bis hin zu komplexen Schaltschemata oder Algorithmen variieren.

Einfache Verschlüsselungstechnologie "ein Byte - ein Zeichen" ist nicht ausreichend für Text - Strings mit so einem breiten Repertoire an Zeichen wie [ISO10646] . Neben den gesamten Zeichensatz zu kodieren (zB UCS-4), gibt es einige andere Teile der codierenden [ISO10646] .

5.2.1 Auswahl einer Codierung

Entwicklungstools (zB Texteditoren) können HTML-Dokumente in der Codierung Ihrer Wahl kodieren, und diese Wahl hängt maßgeblich von den Konventionen von der Systemsoftware verwendet. Diese Mittel können jede geeignete Codierung verwenden , die die meisten der Zeichen in dem Dokument enthält, sofern die Codierung korrekt gekennzeichnet. Einige Zeichen, die nicht in dieser Codierung enthalten sind, können dargestellt werden durch Zeichenreferenzen . Er bezieht sich immer auf das Dokument-Zeichensatz, nicht die Zeichencodierung.

Server und Proxies können eine Zeichencodierung ändern (Transkodierungs) on the fly für Benutzeragenten abfragen (siehe. Abschnitt 14.2 [RFC2068] , der HTTP - Request - Header "Accept-Charset"). Server und Proxies müssen nicht die Dokumentcodierung dienen, einschließlich der gesamten Dokument-Zeichensatz.

Es ist weit verbreitet auf der Web - Codierung verwendet - ISO-8859-1 (auch als "Latin-1" genannt, wird für die meisten westeuropäischen Sprachen verwendet), ISO-8859-5 (mit kyrillischen Unterstützung), SHIFT_JIS (japanische Kodierung), EUC-JP (ein anderes Japanese encoding) und UTF-8 (eine Variante Codierung von ISO 10646 eine unterschiedliche Anzahl von Bytes für verschiedene Zeichen verwenden). Die Namen der Zeichenkodierungen sind Groß- und Kleinschreibung, so dass zum Beispiel "SHIFT_JIS", "Shift_JIS" und "shift_jis" gleichwertig sind.

Diese Angabe ist nicht festgelegt, welche Zeichencodierung soll den User-Agent unterstützen.

Konforme Benutzer müssen korrekt in jeder Codierung alle Zeichen in Unicode anzuzeigen, können sie erkennen.

Hinweise zu bestimmten Codierungen  

Wenn HTML - Text übertragen wird in UTF-16 (charset = UTF-16), sollten Textdaten im Netzwerk - Byte - Reihenfolge übertragen werden ( "Big-Endian", das höherwertige Byte - zuerst) in Übereinstimmung mit [ISO10646] , Abschnitt 6.3 und [UNICODE] die Position des C3, Seite 3-1.

Darüber hinaus ist die Wahrscheinlichkeit einer korrekten Interpretation zu erhöhen, wird empfohlen, Dokumente UTF-16, immer mit dem Charakter nicht brechen Räume eine Breite von Null beginnen zu übertragen (Hexadezimal-Code FEFF, auch Mark in der Größenordnung von Bytes (Byte Order Mark genannt - BOM)), die Bytes Handhabung wird, wird hex FFFE nie mit dem Symbol zugeordnet. Somit erhält der User-Agent FFFE Hex-Code als die ersten Bytes des Textes bewusst sein, dass der Rest des Textes der Bytes umgekehrt werden müssen.

Sie nicht die Transformation Format verwenden UTF-1 [ISO10646] (registriert durch IANA als ISO-10646-UTF-1). Weitere Informationen zu ISO 8859-8 und den bidirektionalen Algorithmus finden. Abschnitt Bidirektionalität und Zeichencodierung .

5.2.2 Angabe der Zeichencodierung

Wie der Server bestimmt, welche Codierung Zeichen im Dokument verwendet? Einige Server untersuchen die ersten Bytes des Dokuments oder überprüft anhand einer Datenbank von bekannten Dateien und Kodierungen. Die meisten modernen Web-Server-Administratoren mit einer größeren Zeichensatz-Konfigurationsmanagement-Funktionen als die alten Server. Web-Server-Administratoren sollten diese Mechanismen verwenden Parameter zu senden, wenn möglich "charset", muss aber darauf achten, nicht die "charset" Parameterwert auf gefälschte Dokumente zu setzen.

Wie der User-Agent wissen, welche Zeichencodierung verwendet worden ist? Diese Informationen werden von dem Server zur Verfügung gestellt. Der beste Weg , den User - Agent über die Zeichenkodierung des Dokuments zu informieren - das "charset" Parameter im Kopffeld zu verwenden "der Content-Typ" das HTTP - Protokoll ( [RFC2068] , Abschnitte 3.4 und 14.18) zum Beispiel gibt HTTP - Header das nächste, das verwendet Codierung EUC-JP:

 Content-Type: text / html;  charset = EUC-JP

Definieren von text / html cm. In Abschnitt Linie .

Das HTTP - Protokoll ( [RFC2068] , Abschnitt 3.7.1) ist der Ansicht ISO-8859-1 - Codierung Standardzeichen, wenn der Parameter "charset" Header - Feld "Content-Type" fehlt. In der Praxis ist diese Empfehlung nutzlos, weil einige Server, die Sie nicht zulassen, den Parameter "charset" zu senden, und einige können nicht senden Dieses Element konfiguriert werden. Daher müssen Benutzer keine Bedeutung "charset" Parameter übernehmen.

So geben Sie eine Serverkonfiguration Grenzen oder HTML-Dokumente können explizite Informationen über die Zeichenkodierung des Dokuments enthalten; solche Informationen, Benutzeragenten können zur Verfügung zu stellen Elemente verwenden META .

Zum Beispiel, um festzulegen , dass die Zeichenkodierung des aktuellen Dokuments ist "EUC-JP", umfassen die folgenden klassifiziert die META :

 <Meta http-equiv = "Content-Type" content = "text / html; charset = EUC-JP">

Announcement META sollte nur verwendet werden , wenn die Zeichenkodierung bestellt ist , so dass ASCII - Zeichen anstelle stehen (zumindest , wenn das Element Parsen META ). Anzeigen META sollte so früh wie möglich in einem Element im Text sein HEAD .

In Fällen , in denen weder das HTTP - Protokoll noch das Element der META keine Informationen über die Codierung des Dokuments zur Verfügung stellen, bietet HTML das Attribut charset für einige Elemente. Durch diese Mechanismen kombiniert, kann ein Autor erheblich verbessern die Chancen, dass, wenn der Benutzer die Ressource geladen wird, wird der User-Agent die Zeichencodierung zu erkennen.

Um es zusammenzufassen, Benutzeragenten entsprechen in der Bestimmung Zeichencodierung des Dokuments (von der höchsten Priorität zum niedrigsten) sollten von den folgenden Quellen geführt werden nach Priorität :

  1. Der Parameter "charset" HTTP-Protokoll in der "Content-Type".
  2. Ad die META , die für die "http-equiv" für "charset" auf "Content-Type" und gesetzt.
  3. Attribut charset auf einem Element gesetzt , das eine externe Ressource bezeichnet.

Darüber hinaus verwenden die Liste der Prioritäten kann der User-Agent-Heuristik und Benutzereinstellungen Setup. Zum Beispiel verwenden viele Benutzer eine Heuristik, die verschiedenen Kodierungen für japanische verwendet zu unterscheiden. Benutzerprogramme haben in der Regel eine lokale Standard benutzerdefinierte Codierung verwenden sie, wenn es keine Anzeichen Codierung ist.

Benutzerprogramme können einen Mechanismus bereitstellen, die Benutzer die falsche Informationen über den Zeichensatz zu ändern. Wenn jedoch ein User-Agent, einen solchen Mechanismus bietet, sollte es nur bieten sie für den Browser und nicht für die Bearbeitung, die Erstellung von Web-Seiten mit falschen Parameter "charset" zu vermeiden.

Hinweis. Wenn einige Anwendung benötigen Sie Zeichen außerhalb der Codierung verwenden [ISO10646] , diese Symbole persönliche Zone , um Konflikte zu vermeiden , mit gegenwärtigen oder zukünftigen Versionen der Norm müssen zugeordnet werden. Es wird jedoch aus Gründen der Tragbarkeit empfohlen.

5.3 Verweise auf Symbole

Diese Zeichencodierung können nicht alle Zeichen aus dem Dokument-Zeichensatz enthalten. Für solche Kodierungen, oder auf solche Konfigurationen von Hardware und Software , die Benutzer bestimmte Zeichen eingeben nicht zulassen, können Autoren verwenden Zeichenreferenzen SGML. Zeichenreferenzen - es ist unabhängig von der Codierung Mechanismus für ein beliebiges Zeichen eingeben.

Zeichenreferenzen in HTML kann zwei Formen annehmen:

  • Numerische Zeichenreferenzen (dezimal oder hexadezimal).
  • Verweise auf die Kombination von Symbolen.

Zeichenreferenzen in den Kommentaren keine Rolle spielen ; sie sind die doch nur Daten.

Hinweis. HTML bietet andere Möglichkeiten der Zeichen insbesondere präsentiert eingebettete Bilder .

Hinweis. Die SGML kann letzte Zeichen in einigen Fällen weggelassen werden ";" nach Zeichenreferenzen (zB Leitungsbruch oder unmittelbar vor einem Tag). In anderen Fällen können sie nicht (beispielsweise in der Mitte des Wortes) entfernt werden. Wir schlagen vor , mit dem ";" immer vermeiden Probleme mit Benutzeragenten , für die dieses Symbol ist obligatorisch.

5.3.1 Numerische Zeichenreferenzen

Numerische Bezugszeichen zeigen den Code - Symbol in dem Zeichensatz des Dokuments. Numerische Zeichenreferenzen kann auch zwei Formen:

  • Die Syntax "& # D;", wobei D - eine Dezimalzahl, die Unicode - Zeichen mit einer Dezimalzahl zeigt D.
  • Die Syntax "& # x H;" oder "& # X H;", wobei H - die hexadezimale Zahl gibt den Unicode - Zeichen Hexadezimalzahl H. Die hexadezimalen numerischen Zeichenreferenzen sind Groß- und Kleinschreibung.

Hier sind einige Beispiele von numerischen Zeichenreferenzen:

  • & # 229; (Dezimal) steht für den Buchstaben "a" von oben Kreis (verwendet zum Beispiel in Norwegisch).
  • & # XE5; (Hexadezimal) repräsentiert den gleichen Charakter.
  • & # Xe5; (Hexadezimal) repräsentiert den gleichen Charakter.
  • & # 1048; (Dezimal) repräsentiert die kyrillischen Großbuchstaben "I".
  • & # X6C34; (Hexadezimal) stellt das chinesische Schriftzeichen für "Wasser".

Hinweis. Obwohl die hexadezimale Darstellung ist in nicht definiert [ISO8879] , wird sie in der neuen Version zu erwarten, wie beschrieben in [WEBSGML] . Diese Vereinbarung ist besonders nützlich , da die Zeichen Standards im Allgemeinen hexadezimale Darstellungen verwenden.

5.3.2 Kombinationen von Zeichenreferenzen

Geben Autoren proaktiver Weise Symbole zu verwenden, bietet HTML eine Reihe von Zeichen - Entity - Referenzen. Kombinationen von Zeichenreferenzen verwenden symbolischen Namen , so dass Autoren nicht die auswendig lernen müssen Codes. Zum Beispiel kann eine Kombination von & aring; bezeichnet das Zeichen "a" Kleinbuchstaben mit einem Kreis auf die Oberseite; "& Aring;" leichter zu merken als & # 229;.

HTML 4.0 ist kein Zeichen-Entity-Referenz für jedes Zeichen definieren. Zum Beispiel ist das kyrillische Buchstaben "I" gibt es keine Zeichen-Entity-Referenz. Siehe. Eine vollständige Liste der Zeichenreferenzen definiert in HTML 4.0.

Kombinationen von Zeichenreferenzen sind Groß- und Kleinschreibung. Also, & Aring; Es gibt ein anderes Symbol (Ein Kreis mit einem oberen Gehäuse) und nicht auf & Aring; (Ein Kreis mit einem Kleinbuchstaben).

Vier Verbindungen müssen besonders erwähnt werden, da sie häufig verwendet werden, Sonderzeichen, um anzuzeigen:

  • "& Lt;" ist ein Zeichen <.
  • "& Gt;" Es stellt die> Zeichen.
  • "& Amp;" & Ist das Symbol.
  • "& Rdquo; es ist ein Zeichen."

Autoren, die den Text des Symbols "<" müssen Sie auf den Link setzen wollen "& lt;" (ASCII dezimal 60), um eine mögliche Verwechslung mit dem Beginn eines Tags (Tag Eröffnungszeichen beginnen). In ähnlicher Weise verwenden "& gt;" (ASCII dezimal 62) anstelle von ">" Probleme mit älteren Benutzerprogrammen zu vermeiden, die falsch sie für den End-Tag nehmen (Endtag Trennzeichen).

Autoren sollten verwenden "& amp;" (ASCII dezimal 38) anstelle von "&" Verwirrung zu den Symbolen (Eröffnungszeichen Entity-Referenz) mit Bezug zu vermeiden. Autoren sollten auch verwenden "& amp;" in Attributwerte , da Zeichenreferenzen innerhalb von Attributwerten CDATA erlaubt.

Einige Autoren verwenden, um die Zeichen-Entity-Referenz "& quot;" kodieren Instanzen der doppelten Anführungszeichen ( "), weil dieses Zeichen zum Trennen von Attributwerten verwendet wird.

5.4 Nicht druckbare Zeichen

Möglicherweise ist das Benutzerprogramm nicht in der Lage anzuzeigen , beispielsweise in dem Dokument, alle Zeichen, wegen des Mangels an entsprechenden Text oder wenn der Charakter hat einen Wert, der nicht in dem inneren Codierungsbenutzerprogramm ausgedrückt werden kann, usw.

Da in diesem Fall gibt es mehrere Möglichkeiten gibt, gibt dieses Dokument keine spezielle Taktik verschreiben. Je nach Anwendung der nichtdruckenden Zeichen auch weitere Anzeigesystem verarbeitet werden können, nicht die Anwendung selbst. Im Falle von komplexeren Verhalten, beispielsweise für ein bestimmtes Script oder Sprache konfiguriert ist, empfehlen wir das folgende Verhalten für User-Agents:

  1. Bitte gut sichtbar, aber unaufdringlich Mechanismus, um den Benutzer von fehlenden Ressourcen aufmerksam zu machen.
  2. Wenn fehlende Zeichen in einem anderen numerischen Darstellung präsentiert werden, verwenden Sie die hexadezimale (nicht dezimal) Form, da diese Form in Zeichensatz-Standards verwendet wird.