The Definitive Guide to Web Zeichenkodierung - Sitepoint
Wir werden die Details in einer Minute schauen, aber jetzt lasst uns einfach sagen, dass eine Zeichencodierung der richtige Weg ist, die Buchstaben, Ziffern und andere Symbole werden als numerische Werte ausgedrückt, die ein Computer verstehen kann.
Was ist der Unterschied?
Warum ist es gleichgültig, welche Form der Codierung wählen wir? Was passiert, wenn wir die „falschen“ wählen?
Was beeinflusst die Wahl?
Eine Reihe von Parametern sollte berücksichtigt werden, bevor wir eine Form der Codierung, einschließlich wählen:
- Welche Zeichen soll ich verwenden?
- In den Codierungen können Dateien mein Editor speichern?
- Welche Kodierungen werden durch die verschiedenen Komponenten in meiner Verlagskette unterstützt?
- Welche Kodierungen werden von den Browsern der Besucher unterstützt?
Lassen Sie uns jede dieser Fragen nacheinander prüfen.
Einige Autoren bevorzugen normale Text-Editoren wie Notepad oder Vim zu verwenden; andere wie ein Point-and-Click-WYSIWYG-Tool wie Dreamweaver; einige mit einem hoch entwickelten Content Management System (CMS). Unabhängig von persönlichen Vorlieben, unsere Wahl der Redakteure beeinflusst unsere Wahl der Codierung. Einige Editoren können nur in einer Codierung speichern, und sie werden nicht einmal sagen, eine, die. Andere können in Dutzenden von verschiedenen Kodierungen speichern, benötigen aber Sie wissen, was man Ihre Bedürfnisse anzupassen.
Eine Verlagskette besteht aus mehr als einem Editor. Es gibt immer einen Webserver (HTTP-Server) am anderen Ende der Kette, aber es kann auch andere Komponenten sein, zwischendurch: Datenbanken, Programmierung oder Skriptsprachen, Frameworks, Anwendungsserver, Servlet-Engines und vieles mehr.
Es ist nicht möglich, die Fähigkeiten aller verschiedenen Editoren, Datenbanken und so weiter in diesem Artikel aufgelistet werden, weil es einfach zu viele von ihnen gibt. Sie müssen in der Dokumentation für Ihre Komponenten suchen, bevor die Codierung der Wahl zu verwenden.
Was ist eine Zeichenkodierung?
Ein Zeichen ist die kleinste Einheit des Schreibens, die in der Förder Informationen in der Lage ist. Es ist ein abstraktes Konzept: ein Zeichen, das nicht ein visuelles Erscheinungsbild hat. „Versalien Latein A“ ist ein anderes Zeichen von „Klein Latein a“ und von „Groß Kyrillisch A“ und „Groß griechischen Alpha“.
Die Menge der verfügbaren Zeichen ist ein Zeichen Repertoire genannt. Die Lage (Index) ein gegebenes Zeichen innerhalb eines Repertoires als seine Codeposition oder Codepunkt bekannt.
Das Verfahren zur numerisch einen Codepunkt in einem bestimmten Repertoire darstellt, wird die Zeichenkodierung genannt. Leider hat sich der Begriff „Zeichensatz“ oder „charset“, sowohl für Repertoires und für Codierungen verwendet, so ist es am besten, es ganz zu vermeiden.
Die frühen Computer nicht über eine standardisierte Zeichencodierung, aber das hat nicht viel aus, weil Computer nur selten miteinander damals kommunizieren könnten. Wenn Inter-Computer-Kommunikation möglich wurde, wurde die Notwendigkeit einer Codierungsstandard deutlich. Ein gemeinsames frühes Repertoire / Codierung war EBCDIC, war ein weiterer der amerikanische Standard Code for Information Interchange, auch bekannt als ASCII. Die US-Version, US-ASCII, wurde als ISO 646 standardisiert.
Die Reihe ISO 8859 war ein Versuch, Alternativen für andere Sprachen als Englisch zur Verfügung zu stellen. Es ist eine Obermenge von ASCII, das heißt die ersten 128 Codepunkte das gleiche in ASCII sind und alle Versionen von ISO 8859. Aber ISO 8859 verwendet acht Bits und damit 256 Zeichen darstellen kann (0-255). Es wird deshalb manchmal falsch "8-Bit-ASCII" genannt. Der Bereich von 128 bis 159 (0x80 bis 0x9F) wird für C1 Steuerzeichen reserviert.
Die am weitesten verbreitete Version für westliche Sprachen ist ISO 8859-1, auch bekannt als ISO Latin-1. Es enthält eine Reihe von akzentuierte Versionen der Vokale, sowie verschiedene Sonderzeichen. Es wurde nun durch ISO 8859-15, ersetzt das Euro-Zeichen (€, -Euro;) aufzunehmen.
Microsoft, bekannt nie jemand anderen Standard für die folgenden, wenn es seine eigenen erstellen, erstellt hat auch eine Reihe von Zeichenrepertoires / Kodierungen. Diese wurden „Codepages“ in DOS genannt und CP850 war die Codepage für westliche Sprachen verwendet.
Für Sprachen, die keine lateinischen Buchstaben, ähnlich spezialisierte Repertoires / Kodierungen wurden entwickelt. Das Problem war, dass es kein Repertoire / Codierung, die für Kombinationen solcher Sprachen verwendet werden könnte.
Die Lösung dieses Problems ist Unicode genannt - ein Zeichenrepertoire, die in den Sprachen der Welt verwendet, die meisten der Zeichen enthält. Es kann Millionen von Zeichen aufnehmen, und enthält bereits Hunderttausende. Unicode ist in „Ebenen“ von 64K-Zeichen unterteilt. Die einzige, in den meisten Fällen verwendet wird, ist die erste Ebene, als Grund mehrsprachige Ebene bekannt ist, oder BMP.
Eine Version von Unicode, die von der ISO standardisiert wurde, ist ISO 10646 genannt (die Zahl ist kein Zufall, zu vergleichen, um US-ASCII von ISO 646). Es gibt kleine Unterschiede zwischen Unicode und ISO 10646, aber nichts, was wir Sterblichen sich Sorgen machen müssen.
ISO 10646 ist wichtig, weil es das Zeichenrepertoire, das von HTML verwendet wird.
Welches Encoding soll ich wählen?
Leider aber sind ein paar kleinere Probleme mit der Verwendung von UTF-8 zugeordnet - auch in der heutigen Zeit.
Das erste Problem mit UTF-8 ist, dass nicht alle Editoren oder Publishing-Tools unterstützen. Sie würden denken, dass alle Software-UTF-8 nach all diesen Jahren unterstützen würden, aber leider ist dies nicht so.
Ein kleines Problem ist, dass einige alte Browser nicht UTF-8 (auch ohne BOM) unterstützen. diese sollten jedoch seine wenige und weit zwischen diesen Tagen.
Die HTML-Validator des W3C wird diese Art von ungültigen Zeichen fangen und sie als Fehler melden.
Probleme mit anderen Codierungen
UTF-8 und die ISO 8859-Serie werden auch von modernen Browsern unterstützt. Die meisten Browser unterstützen auch einige andere Codierungen, aber wenn Sie eine exotische Codierung wählen, laufen Sie Gefahr, dass einige Besucher nicht in der Lage sein, Ihre Inhalte zu lesen.
Angeben der Codierung
Sobald Sie die Codierung gewählt haben, verwenden Sie, müssen Sie sicherstellen, dass die richtigen Informationen an Browser übergeben wird, Suchmaschinen, und so weiter.
Webseiten werden mit dem Hypertext Transfer Protocol serviert (HTTP): ein Browser sendet eine Anforderung über HTTP und der Server sendet eine Antwort zurück über HTTP. Die Antwort besteht aus zwei Teilen: Kopf- und Körper, durch eine Leerzeile getrennt. Die Header enthalten Informationen über den Körper (Inhalt). Der Körper enthält die angeforderte Ressource (in der Regel ein HTML-Dokument).
Für HTML, Informationen kodieren, sollte von dem Web-Server unter Verwendung der Content-Type-Header gesendet werden:
Beachten Sie jedoch, dass jede echte HTTP-Header ein META-Element außer Kraft gesetzt wird, so ist es unerlässlich, dass Sie den Web-Server korrekt eingerichtet ist. Für Apache, können Sie dies tun, indem Sie die Konfigurationsdatei (/etc/httpd.conf auf den meisten * nix-Systeme). Die Richtlinie soll wie folgt aussehen:
Für Microsoft IIS, muss diese Einstellung in seinen zahlreichen Dialogfelder befinden.
Leider ist eine Codierung der Wahl nicht immer einfach. Mangelnde Unterstützung innerhalb der verschiedenen Komponenten in der Publishing-Kette können Sie verwenden, die Kodierung verhindert, dass Ihre Inhalte am besten passen würde.