Zeichencodierung
Im Computerbereich gibt es verschiedene Zeichensätze und Zeichencodierungen. Der Zeichensatz, also die Menge aller verwendbaren Zeichen, ist für HTML-Dokumente generell Unicode. Um ein konkretes Dokument zu erstellen, müssen Sie dafür eine Zeichencodierung verwenden. Die Zeichencodierung legt fest, wie ein bestimmtes Zeichen in Bits und Bytes abgebildet wird.
Wenn Sie nichts weiter unternehmen, werden Ihre Werkzeuge (Editor, Browser) eine voreingestellte Codierung verwenden. Das ist insofern problematisch, als dass alle beteiligten Systeme nun raten müssen, in welcher Codierung ein Dokument vorliegt. Das ist aber nicht immer eindeutig erkennbar. Es ist deshalb eine gute Idee, für Klarheit zu sorgen.
- Bytes und Buchstaben
- ASCII
- ISO-8859-Familie
- Unicode - der universale Code
- UTF-16
- UTF-32
- UTF-8
- Unicode in der Praxis
- im Editor
- Meta-Angabe im Dokument
- HTTP-Header
- Emojis und Emoticons
- Darstellung
- zugängliche Emoticons
- Zeichencodierung in MySQL
Eine Zeichencodierung beschreibt die konkrete Zuordnung eines Codepoints zu einem Byte oder einer Bytesequenz. UTF-8 und UTF-16 sind beispielsweise Codierungen für den Zeichensatz Unicode.
Einige Software-Hersteller bezeichnen Zeichencodierungen mit einem historisch gewachsenen Synonym, nämlich der „Zeichensatz-“ oder kurz „Zeichentabelle“ (code page bzw. codepage). So bezeichnet beispielsweise Microsoft im seinem Windows-Betriebssystem die Zeichencodierung UTF-8 als „Codepage 65001“ oder kurz „CP65001“.
Wenn Sie sich mit Zeichencodierung noch nicht weiter beschäftigt haben, ist es sicherlich am besten, wenn Sie zuerst die auf dieser Seite beschriebenen Grundlagen zur Zeichencodierung lesen und sich anschließend die konkreten Beschreibungen zur Umsetzungen in den einzelnen Techniken der nachfolgenden Links anschauen.
Begrifflichkeiten
Für die Zeichen-Problematik gibt es eine Reihe Begrifflichkeiten, die allerdings oftmals falsch angewendet werden. Nachfolgend der Versuch einer Aufklärung:
Zeichensatz
Ein Zeichensatz (englisch: character set, charset) ist die Gesamtheit der zur Verfügung stehenden Zeichen. Ein Zeichensatz ist ein eher abstraktes Gebilde, das nur die Zeichen selbst und eine Reihenfolge beschreibt, nicht jedoch eine konkrete Abbildung auf Byte-Werte. Das ist Aufgabe der Zeichencodierung.
Beispielsweise ist Unicode ein Zeichensatz, UTF-8 hingegen ist eine Zeichencodierung.
Zur Blütezeit der 1-Byte-Codierungen (für Zeichensätze mit bis zu 256 Zeichen) wurde die Unterscheidung zwischen Zeichensatz und Zeichencodierung in der Praxis oft vernachlässigt. Die Position eines Zeichens im Zeichensatz und seine Codierung ist mit den Werten von 0 bis 255 (= 1 Byte) immer gleich, und auch eindeutig in beide Richtungen. Bei Zeichensätzen mit mehr als 256 Zeichen gibt es jedoch mehrere Verfahren, sie auf Byte-Werte abzubilden, weswegen die Unterscheidung zwischen Zeichensatz und Zeichencodierung wichtig geworden ist.
Der Zeichensatz für HTML-Dokumente ist seit Version 4.0 stets Unicode. Die Zeichencodierung eines konkreten Dokuments (Datei) ist beispielsweise UTF-8 oder ISO-8859-1. Mit einer 1-Byte-Codierung wie ISO-8859-1 können nur deren Zeichen direkt eingefügt werden. Über die Escaping-Mechanismen Numerische Zeichenreferenz und teilweise Entitys lassen sich alle in Unicode definierten Zeichen in ein HTML-Dokument einfügen.
Statt Zeichensatz werden oft die Begriffe Font, Schriftart oder Zeichencodierung verwendet, obwohl diese genau genommen etwas anderes bedeuten. Auch wird die englische Übersetzung charset an vielen Stellen verwendet, an denen korrekterweise encoding (Codierung) stehen müsste. Das betrifft vor allem den Parameter charset
im HTTP-Header Content-type
und im gleichnamigen HTML-Meta-Element. Im Vorspann einer XML-Datei wird hingegen richtigerweise encoding
verwendet.
Codepoint
Zeichen in einem Zeichensatz (z. B. ASCII oder Unicode) werden in einer bestimmten Reihenfolge in einem Coderaum (code space) angeordnet. Die Position eines Zeichens ist der Codepoint (zu Deutsch etwa „Codeposition“). Ein Zeichensatz mit Codepoints ist ein codierter Zeichensatz (coded character set).
Ein Unicode-Zeichen wird oftmals in der Form U+xxxxxx
beschrieben, zum Beispiel wenn aus der bildlichen Darstellung nicht eindeutig auf ein Zeichen geschlossen werden kann. Das xxxxxx
ist die hexadezimale Codepoint-Angabe aus bis zu sechs Ziffern. Auch für Numerische Zeichenreferenzen in HTML wird der Codepoint in dezimaler oder hexadezimaler Schreibweise verwendet.
Beispiel: € = Codepoint U+20AC
(dez. 8364
) = €
oder €
Schriftart
Für die grafische Darstellung von Zeichen wird eine Schriftart verwendet, die in der Regel eine in sich konsistente Gestaltung aufweist, beispielsweise für die Strich-Dicke oder Verzierungen. Arial, Times New Roman oder Courier sind Beispiele für Schriftarten.
Schriftart ist im engeren Sinne nach eher ein Synonym zu Schriftschnitt, also bspw. Helvetica 24pt fett
. Da Schriftarten wie Arial, Helvetica, Times Roman usw. oft aus mehreren Schriftschnitten für Breiten (schmal, breit, …), Strichstärken (leicht, normal, fett, …) und Zeichenlagen (normal, kursiv, …) bestehen, verwendet man auch den Begriff Schriftfamilie, der nicht genau von Schriftart abzugrenzen ist.
Glyphe
Der Begriff Glyphe wird gelegentlich für die konkrete Darstellung eines Zeichens verwendet. Die Schriftart bestimmt, welches Zeichen mit welcher Glyphe dargestellt wird.
Font
Ein Font ist die Aufbereitung einer Schriftart für den Einsatz mit einem Computer, also eine Datei, die eine Schriftart beschreibt.
Tastatur-Layout
Ein Tastatur-Layout oder eine Tastaturbelegung (auch Tastenlayout oder Tastenbelegung) ordnet einer Taste auf der Tastatur einen Codepoint zu.
Beispielsweise produziert die auf einer deutschen Tastatur mit „z“ beschriftete Taste mit einer deutschen Tastenbelegung den Unicode-Codepoint U+007A
, also (erwartungsgemäß) ein „z“. Ändert man die Tastenbelegung auf US-amerikanisch, so erzeugt dieselbe Taste den Codepoint U+0079,
also ein „y“. Mit einer russischen Belegung produzieren praktisch sämtliche Tasten andere Resultate, nämlich die Codepoints für kyrillische statt lateinischer Buchstaben, also z. B. „н“ (U+043D
) statt „z“.
Weblinks
- W3C: Zeichencodierung für Anfänger
- W3C: Dokument-Zeichensatz
- W3C: Verwendung von Zeichen-Escapes in Markup und CSS
- W3C: Änderung der Zeichencodierung einer (X)HTML-Seite auf UTF-8
- W3C: Darstellungsprobleme durch das UTF-8-BOM
Unicode:
- Alan Woods Unicode Resources: Alle Unicode-Tabellen in reiner HTML-Form (im Gegensatz zu denen des Unicode-Consortiums), dazu ausführliche Infos über Unicode-Schriftarten und Schriftarten für spezielle Zeichensätze, Informationen zu unicode-fähigen Software-Produkten, inklusive Font- und Tastatur-Utilities und Hinweise zum Erstellen mehrsprachiger Webseiten.
Autor: Allen Wood - Richard Ishidas string analyser: Identifiziert unicode-Zeichen in einem String.
Autor: Richard Ishida, W3C - r12a: Unicode code converter
Typografie:
- Bitstream Inc.: Alles zur TrueDoc-Technologie, einem Schriftartenkonzept für plattformübergreifendes elektronisches Publizieren (siehe auch Downloadbare Schriftarten).
- Font Size Intervals: Der Artikel von Todd Fahrner beschäftigt sich mit den unterschiedlichen Schriftgrößen und Maßeinheiten, insbesondere relativen Schriftgrößen.
- Typograph online: Umfangreiche Einführung in die Lehre von der Typografie. Alles über Schriftarten, Schrifttypen und typografische Begriffe wie Dickte, Kerningpaar usw.
Autor: Ralf Janaszek
Fontsammlungen:
- 1001 Fonts.com | Download Free Fonts: Umfangreiche Schriftartensammlung für Truetype- und Postscript-Schriftarten.
Schriftarten sind nach typografischen Kategorien sortiert. Das gesamte Verzeichnis ist durchsuchbar. - Letter Perfect: Hervorragend sortierte Sammlung von Schriftarten zum Downloaden. Interessante Hintergünde zum Thema Typografie