Ein Vorrat an Zeichen zur Darstellung von Sachverhalten wird als Zeichensatz bezeichnet. Elemente eines Zeichensatzes können unter anderem Buchstaben eines Alphabets, Ziffern, mathematische Symbole, Sonderzeichen oder Symbole der Lautumschrift sowie Piktogramme und Steuerzeichen sein. Besonders in der Informatik versteht man unter einem Zeichensatz die Gesamtheit definierter Zeichen. Eine Zeichencodierung legt fest, wie diese Zeichen durch Zahlen beziehungsweise Bytefolgen dargestellt werden. Die grafische Ausgestaltung eines Zeichens wird als Glyphe bezeichnet; zusammengehörige Glyphen sind in Schriftarten organisiert. Zeichensatz, Zeichencodierung und Schriftart sind daher voneinander zu unterscheiden.
Zeichensätze und Computer
Zeichensätze für Computer umfassen definierte Zeichen, während die zugehörigen Zeichencodierungen deren technische Darstellung regeln. Zu den bekanntesten frühen Standards gehört ASCII, der 1963 erstmals standardisiert wurde und unter anderem bei Fernschreibern wie dem Teletype ASR-33 zum Einsatz kam. Der ursprüngliche ASCII-Code umfasst 128 Positionen, darunter 95 darstellbare Zeichen und mehrere Steuerzeichen. Der internationale Standard, auf dem moderne Computersysteme basieren, ist Unicode. Sein Codebereich umfasst 1.114.112 mögliche Codepunkte, von denen jedoch nicht alle mit Zeichen belegt sind. Für ältere Systeme und Dokumente ist außerdem die ISO/IEC-8859-Familie von Bedeutung. Sie besteht aus mehreren 8-Bit-Codierungen und deckt unter anderem zahlreiche europäische Sprachen sowie Arabisch, Hebräisch, Thailändisch und Türkisch ab. Daneben gibt es Zeichensätze von Computerfirmen sowie spezifische nationale Varianten. Für neue Webinhalte ist heute in der Regel UTF-8 die geeignete Codierung.
Unicode
Der bedeutendste Zeichenstandard der Informatik ist Unicode. Er ist ein internationaler Standard. In ihm werden sinntragende Zeichen und Textelemente bekannter Schriftkulturen und Zeichensysteme als digitale Codepunkte festgelegt. Ziel ist es, inkompatible Codierungen in verschiedenen Ländern und technischen Systemen zu beseitigen. Unicode wird weiterhin erweitert und ergänzt. Der Standard ISO/IEC 10646 definiert den Universal Coded Character Set (UCS) und wird inhaltlich mit Unicode abgestimmt; er ist jedoch kein Teil der ISO/IEC-8859-Familie. Damit ein Zeichen auf einem Bildschirm oder Drucker sichtbar wird, sind neben der Codierung eine passende Schriftart und eine Software zur Textdarstellung erforderlich. Fehlt die benötigte Glyphe in der verwendeten Schriftart, kann trotz korrekter Codierung ein Ersatzsymbol erscheinen.
Geschichte des Unicodes
Ursprüngliche Computer-Zeichensätze umfassten nur einen begrenzten Zeichenvorrat. Bei den meisten Codierungen lag die Grenze bei 128 (7 Bit) oder 256 (8 Bit) Codepositionen. Nach Abzug der Steuerzeichen blieben lediglich 95 bis 191 darstellbare Elemente. Sie erlaubten nur die Darstellung weniger Sprachen, oder Anwender mussten in einem Text mit unterschiedlichen Zeichensätzen arbeiten. Dadurch wurde der internationale Datenaustausch bis in die 1990er Jahre erheblich behindert.
Mit ISO 2022 gelang es erstmals, mehrere Sprachen beziehungsweise Alphabete innerhalb eines Codierungssystems darzustellen. Durch Escape-Sequenzen konnte zwischen Zeichensätzen gewechselt werden. Joseph D. Becker, Mitarbeiter von Xerox, schrieb 1988 einen ersten Entwurf für einen universellen Zeichensatz, der ursprünglich vor allem die Zeichen moderner Sprachen codieren sollte. Frühe Überlegungen gingen von einem 16-Bit-Zeichenraum mit 65.536 möglichen Positionen aus. Andere Zeichen sollten unter anderem über Bereiche zur privaten Nutzung abgebildet werden. Im Herbst 1991 wurde nach einer Entwicklungszeit von mehreren Jahren die Version 1.0.0 des Unicode-Standards veröffentlicht, die bereits zahlreiche europäische, nahöstliche und indische Schriften codierte. Sie wurde später um weitere Zeichen und insbesondere um umfangreiche ostasiatische Schriftsysteme erweitert. Mit Unicode 2.0 wurde 1996 die Architektur so ausgebaut, dass der heutige Codebereich bis U+10FFFF abgebildet werden kann.
Codepunkte (Codepoints) und Zeichen
Die Zeichen des Unicode-Standards werden Codepunkten zugeordnet. Diese Codepoints werden hexadezimal mit einem vorangestellten U+ dargestellt. Das Zeichen ß mit dem dezimalen Wert 223 wird beispielsweise als U+00DF codiert. Ein sichtbares Schriftzeichen kann jedoch auch aus mehreren Codepunkten bestehen, etwa aus einem Basisbuchstaben und einem kombinierenden Akzent. Nicht allen Codepunkten sind Zeichen zugeordnet. Einige Positionen sind nicht belegt, während andere als Surrogate, Nichtzeichen oder für besondere technische Zwecke reserviert sind.
Außerdem gibt es spezielle Bereiche für die private Nutzung, deren Codepunkten der Unicode-Standard bewusst keine allgemeingültigen Zeichen zuweist. Diese PUA-Bereiche können von den Erzeugern und Verwendern spezieller Texte für intern vereinbarte Zeichen verwendet werden. Damit solche Zeichen korrekt ausgetauscht und dargestellt werden, müssen sich die beteiligten Systeme über ihre Bedeutung und die zugehörige Schriftart verständigen.
Codierung
Neben dem eigentlichen Zeichenbestand definiert Unicode verschiedene Codierungsformen, mit denen sich Codepunkte als Byte- oder Codeeinheitenfolgen speichern und übertragen lassen. Sie werden unter dem Begriff Unicode Transformation Format, kurz UTF, zusammengefasst. Moderne Webseiten verwenden überwiegend UTF-8. Die Codierung kann im HTTP-Header und in HTML über eine Zeichensatzangabe wie charset="UTF-8" mitgeteilt werden. Beide Angaben sollten mit der tatsächlichen Codierung der Datei übereinstimmen. Andernfalls entstehen Darstellungsfehler, bei denen beispielsweise Umlaute als unverständliche Zeichenfolgen erscheinen. UTF-16 wird unter anderem in bestimmten Programmierschnittstellen und internen Datenformaten eingesetzt, ist aber nicht pauschal die verbreitetste Codierung für alle Betriebssysteme.
Beispiel: In einem HTML-Dokument wird UTF-8 mit einer Zeichencodierungsangabe im head-Bereich kenntlich gemacht:1
<meta charset="UTF-8">Die Angabe gehört vollständig in die ersten 1024 Bytes des Dokuments. Die Datei muss tatsächlich in UTF-8 gespeichert sein; das Meta-Element wandelt eine anders codierte Datei nicht um.
Unicode enthält außerdem Kompatibilitätszeichen, die zu bereits codierten Zeichen oder Zeichensequenzen in Beziehung stehen. Dazu zählen beispielsweise bestimmte Ligaturen oder Darstellungsvarianten, die für die verlustarme Übernahme älterer Codierungen benötigt werden. Deutsche Umlaute können entweder als vorgefertigtes Zeichen oder als Kombination aus einem Basisbuchstaben und einem kombinierenden Trema codiert sein. Solche kanonisch gleichwertigen Folgen sehen meist identisch aus, bestehen technisch aber aus unterschiedlichen Codepunkten. Unicode-Normalisierungsformen helfen dabei, diese Varianten für Suche, Vergleich und Verarbeitung in eine einheitliche Form zu bringen.
Außerdem stellt Unicode Regeln für die Sortierung von Zeichen zur Verfügung. Da die Reihenfolge der Codepunkte nicht in jedem Schriftsystem der sprachlich üblichen Sortierung entspricht, kann bei einer Datenbankanwendung nicht ohne Weiteres die numerische Codepunktreihenfolge verwendet werden. Zu diesem Zweck definiert Unicode den Unicode Collation Algorithm, mit dem Zeichenfolgen innerhalb eines Schriftsystems und über Schriftsysteme hinweg sortiert werden können. Für konkrete Sprachen und Anwendungen sind häufig zusätzliche, lokal angepasste Sortierregeln erforderlich.
Kriterien der Codierung
Eine Besonderheit des Unicode-Standards ist, dass einmal eingeführte Zeichen nicht mehr entfernt werden, weil nur auf diese Weise die langfristige Verwendbarkeit digitaler Daten gewährleistet wird. Dies führt dazu, dass die Aufnahme neuer Zeichen sorgfältig geprüft wird und mehrere Jahre dauern kann. Im Unicode werden abstrakte Zeichen codiert und nicht sämtliche grafischen Schreibweisen desselben Zeichens. Die konkrete Darstellung bleibt den Schriftarten und den Regeln zur Textdarstellung überlassen. Dies kann die digitale Erfassung historischer oder stilistischer Zeichenvarianten erschweren.
Auch bestimmte Kriterien der Vereinheitlichung gehören zu den Charakteristika des Unicode-Standards. So wurden zum Beispiel durch die sogenannte Han-Vereinheitlichung verwandte Zeichen mehrerer ostasiatischer Schriftsysteme gemeinsamen Codepunkten zugeordnet. Diese Vorgehensweise wird fachlich diskutiert und stellt hohe Anforderungen an sprachabhängige Schriftarten. Auch Sortierungs- und Darstellungsregeln können sich je nach Sprache unterscheiden. Dennoch ist Unicode der am weitesten verbreitete Zeichenstandard und wird auf nahezu allen modernen Computersystemen verwendet. Er wird vom Unicode Consortium gepflegt und erweitert.
Zusammenfassung
Ein Zeichensatz ist eine Sammlung definierter Zeichen, die zur Darstellung von Text und Daten verwendet wird. Eine Zeichencodierung legt fest, wie diese Zeichen technisch gespeichert oder übertragen werden. Zu den bekanntesten Standards gehören ASCII und Unicode, wobei Unicode heute als internationaler Standard fungiert.
Unicode wurde entwickelt, um die Darstellung von Zeichen aus verschiedenen Sprachen und Schriftsystemen zu vereinheitlichen. Sein Codebereich enthält mehr als eine Million mögliche Codepunkte, von denen ein wachsender Teil mit Zeichen belegt ist. Der inhaltlich abgestimmte Standard ISO/IEC 10646 bezeichnet seinen Zeichenbestand als Universal Coded Character Set (UCS).
Die Geschichte des Unicode reicht bis in die 1980er und frühen 1990er Jahre zurück. Der Standard war eine Antwort auf die begrenzten Möglichkeiten älterer Zeichencodierungen, die den internationalen Datenaustausch behinderten. Das Unicode Consortium ist für die Pflege und Erweiterung des Standards verantwortlich.
Codepunkte sind hexadezimal angegebene Werte, die Zeichen im Unicode-Standard identifizieren. Ein sichtbares Zeichen kann aus einem oder mehreren Codepunkten bestehen. Daneben gibt es spezielle Bereiche für privat vereinbarte Zeichen, die als PUA-Bereiche bezeichnet werden.
Unicode unterstützt verschiedene Codierungsformen, bekannt als Unicode Transformation Format (UTF). Für Webseiten ist UTF-8 besonders verbreitet. Darüber hinaus enthält der Standard Kompatibilitätszeichen, Normalisierungsregeln und einen Algorithmus für die Sortierung von Zeichen.
Die Aufnahme neuer Zeichen in Unicode ist ein sorgfältiger Prozess, der die Langlebigkeit digitaler Daten gewährleisten soll. Obwohl der Standard allgemein akzeptiert ist, gibt es fachliche Diskussionen, insbesondere in Bezug auf die Vereinheitlichung und Darstellung bestimmter Schriftsysteme.
Häufige Fragen und Antworten
Ein Zeichensatz ist eine Sammlung definierter Zeichen, die zur Darstellung von Text und Daten verwendet wird. Er kann Buchstaben, Zahlen, Symbole, Sonderzeichen und Steuerzeichen aus verschiedenen Sprachen und Schriftsystemen enthalten. Eine Zeichencodierung legt zusätzlich fest, wie diese Zeichen auf Computern gespeichert und übertragen werden.
In der Informatik sind insbesondere ASCII, Unicode und die ISO/IEC-8859-Familie bekannt. ASCII (American Standard Code for Information Interchange) verwendet ursprünglich 128 Codepositionen. Unicode ist ein internationaler Standard, der eine große Anzahl von Zeichen aus verschiedenen Schriftsystemen und Sprachen umfasst. Die ISO/IEC-8859-Familie besteht aus mehreren älteren 8-Bit-Codierungen für unterschiedliche Sprachgruppen.
Unicode ist ein internationaler Standard, der Zeichen aus verschiedenen Schriftsystemen und Sprachen einheitlichen Codepunkten zuordnet. Codierungsformen wie UTF-8 und UTF-16 legen fest, wie diese Codepunkte technisch gespeichert oder übertragen werden. Dadurch verbessert Unicode die Interoperabilität zwischen verschiedenen Computersystemen und Programmen.
