4 · Text

Text darstellen

Wie Zeichen über Codes und Bytefolgen gespeichert werden – von ASCII bis Unicode und UTF-8.

ASCII: Zeichen bekommen Nummern

Text besteht aus Zeichen: Groß- und Kleinbuchstaben, Ziffern, Satzzeichen, Leerzeichen und Steuerzeichen. Damit ein Computer Text speichern kann, benötigt jedes Zeichen eine eindeutige Kennung. ASCII legte dafür einen kleinen standardisierten Zeichenvorrat fest.

Der ursprüngliche ASCII-Code verwendet 7 Bit und kann damit 128 Codes unterscheiden. In der Praxis wurden solche Werte oft in einem ganzen Byte abgelegt. Für englischsprachige Texte war das lange ausreichend; für die Vielfalt der Schriften der Welt ist es viel zu wenig.

Wichtig

Die Zeichenfolge 358 ist nicht dasselbe wie die Zahl 358. Als Text sind es drei Zeichen mit drei Zeichencodes; als Zahl ist es ein numerischer Wert, mit dem gerechnet werden kann.

Unicode: ein gemeinsamer Zeichenvorrat

Unicode weist Zeichen aus sehr vielen Schriftsystemen eindeutige Codepoints zu. Ein Codepoint wird typisch als U+.... notiert. Unicode legt damit fest, welches Zeichen gemeint ist. Eine Codierung wie UTF-8 legt fest, wie dieser Codepoint als Bytes gespeichert wird.

UTF-32

UTF-32 verwendet grundsätzlich 32 Bit pro Codepoint. Das macht die Position einzelner Einheiten leicht berechenbar, ist aber speicherintensiv: Auch ein einfaches lateinisches Zeichen benötigt vier Bytes.

Die Stärke ist die regelmäßige Struktur; die Schwäche ist der hohe Platzbedarf. Deshalb ist UTF-32 als Datei- oder Webcodierung vergleichsweise selten.

UTF-8

UTF-8 verwendet je nach Codepoint ein bis vier Bytes. Die ersten 128 Unicode-Zeichen werden mit genau einem Byte codiert und stimmen dort mit ASCII überein. Dadurch ist englischer Text besonders kompakt und ältere ASCII-Inhalte bleiben kompatibel.

BereichUTF-8-Struktur
1 Byte0xxxxxxx
2 Byte110xxxxx 10xxxxxx
3 Byte1110xxxx 10xxxxxx 10xxxxxx
4 Byte11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

Die vorangestellten Bitmuster zeigen, wie viele Bytes zu einem Zeichen gehören. Die verbleibenden x-Stellen tragen die eigentlichen Bits des Codepoints.

UTF-16

UTF-16 verwendet 16-Bit-Einheiten. Viele Zeichen passen in eine solche Einheit; andere benötigen ein sogenanntes Surrogatpaar aus zwei 16-Bit-Einheiten. Auch UTF-16 ist daher variabel lang.

Welche Codierung platzsparender ist, hängt vom Text ab. UTF-8 ist heute insbesondere im Web sehr verbreitet, während UTF-16 in verschiedenen Programmierschnittstellen und älteren Systemarchitekturen weiterhin vorkommt.

Darstellungen vergleichen

CodierungLängeTypische Eigenschaft
ASCII7 Bit Codebereich, oft 1 Byte gespeichertkleiner Zeichenvorrat
UTF-81–4 Bytevariabel, ASCII-kompatibel
UTF-162 oder 4 Bytevariabel
UTF-324 Bytefest, aber speicherintensiv
Merksatz

Unicode ist der Zeichenvorrat bzw. die Zuordnung zu Codepoints. UTF-8, UTF-16 und UTF-32 sind unterschiedliche Methoden, diese Codepoints als Bytes darzustellen.

Mini-Projekt: eine eigene 5-Bit-Codierung

Mit 5 Bit entstehen 32 Muster. Das reicht beispielsweise für 26 Buchstaben plus einige zusätzliche Zeichen. Entwirf eine Zuordnung und codiert euch gegenseitig kurze Nachrichten. Prüfe anschließend, welche Probleme auftreten: Groß-/Kleinschreibung? Umlaute? Leerzeichen? Satzzeichen?

Genau solche Fragen zeigen, warum ein gemeinsam vereinbarter Zeichensatz entscheidend ist.

Quelle und Bearbeitung

Inhaltlich neu formulierte deutschsprachige Bearbeitung nach dem Computer Science Field Guide – Data Representation, einem Projekt der Computer Science Education Research Group der University of Canterbury (Neuseeland). Die Ausgangsinhalte stehen unter CC BY-SA 4.0. Diese Bearbeitung steht ebenfalls unter CC BY-SA 4.0. Änderungen: Übersetzung, Neuformulierung, didaktische Kürzung/Erweiterung, eigenes Layout und eigene Interaktionen.