Unicode einfach erklärt: Codepunkte und UTF-8
Unicode gibt Zeichen eindeutige Codepunkte. Eine Kodierung wie UTF-8 übersetzt diese Codepunkte in Bytes, damit Computer Text speichern und übertragen können.
Auf dieser Seite lernst du, warum ASCII nicht für alle Sprachen reicht, wie Unicode Zeichen, Codepunkte und Glyphen trennt und wie du typische Darstellungsfehler erklärst.
Hake ab, was du schon kannst — und komm am Ende hierher zurück!
Warum Text eine Zuordnung braucht
Ein Computer speichert zunächst nur unterscheidbare Bitmuster. Erst eine vereinbarte Zuordnung legt fest, ob ein Muster für eine Zahl, einen Buchstaben oder etwas anderes steht.
Ein Bit kann die Werte 0 und 1 annehmen. Mit $n$ Bit gibt es $2^n$ verschiedene Bitmuster.
| Anzahl der Bits | mögliche Bitmuster |
|---|---|
| 2 | 4 |
| 7 | 128 |
| 8 | 256 |
| 16 | 65.536 |
Mit 3 Bit sind acht Muster möglich: von 000 bis 111. Eine vereinbarte Tabelle könnte etwa 000 dem Buchstaben A zuordnen. Ohne diese Tabelle bedeutet 000 nicht von selbst „A“.
Bits erhalten ihre Bedeutung erst durch ein vereinbartes Format und den passenden Kontext.
Wo ASCII an Grenzen stößt
ASCII
ASCII ist eine 7-Bit-Zeichenkodierung mit 128 Positionen. Sie enthält unter anderem englische Groß- und Kleinbuchstaben, Ziffern, Satzzeichen und Steuerzeichen.
Das große A hat in ASCII den Dezimalwert 65. Binär lautet dieser Wert 01000001. Obwohl ASCII nur 7 Bit benötigt, wird ein ASCII-Zeichen häufig in einem Byte gespeichert; das höchste Bit ist dann 0.
Für A zeigen drei Schreibweisen denselben Wert:
- dezimal:
65 - hexadezimal:
41 - binär im Byte:
01000001
Die Darstellungen sehen verschieden aus, bezeichnen aber dieselbe ASCII-Position.
Deutsche Umlaute und viele andere Schriften fehlen in ASCII. Regionale 8-Bit-Zeichensätze erweiterten den Vorrat auf 256 Positionen, konnten aber weiterhin nicht alle Schriftsysteme gemeinsam abdecken.
Wähle in jeder Lücke die passende Form und prüfe anschließend deine Antworten.
ASCII nutzt Bit und hat deshalb Positionen. Eine 8-Bit-Erweiterung besitzt Positionen, löst das weltweite Zeichenproblem aber nicht.
Wie Unicode Zeichen ordnet
Codepunkt
Ein Codepunkt ist die eindeutige Nummer, die Unicode einem abstrakten Zeichen zuordnet. Er wird hexadezimal mit U+ geschrieben, zum Beispiel U+00E4 für ä.
Unicode umfasst 17 Ebenen mit je 65.536 Positionen. Der gesamte Bereich reicht von U+0000 bis U+10FFFF. Nicht jede Position ist einem Zeichen zugewiesen.
Glyphe
Eine Glyphe ist die sichtbare Form eines Zeichens in einer Schriftart. Derselbe Codepunkt kann je nach Schriftart anders aussehen.
Du kannst die Ebenen so auseinanderhalten:
- Das Zeichen ist die abstrakte Bedeutung, etwa der Buchstabe
A. - Der Codepunkt ist seine Unicode-Nummer, bei
AalsoU+0041. - Die Zeichenkodierung erzeugt daraus eine speicherbare Bytefolge.
- Eine Schriftart liefert die sichtbare Glyphe.
Wie UTF-8 Codepunkte speichert
UTF-8
UTF-8 ist eine Unicode-Kodierung mit unterschiedlich langen Bytefolgen. ASCII-Zeichen benötigen ein Byte; andere Unicode-Zeichen benötigen je nach Codepunkt mehrere Bytes, höchstens vier.
Reine ASCII-Texte sind in UTF-8 bytegleich mit ASCII. Das macht UTF-8 abwärtskompatibel zu ASCII und für den Datenaustausch praktisch.
| Verfahren | technische Einheit | Speicheridee |
|---|---|---|
| UTF-8 | 8-Bit-Werte | 1 bis 4 Byte pro Codepunkt |
| UTF-16 | 16-Bit-Werte | ein Wert in der BMP, sonst ein Surrogatpaar |
| UTF-32 | 32-Bit-Werte | Codepunkt auf 32 Bit aufgefüllt |
In UTF-8 benötigt A ein Byte, weil es zum ASCII-Bereich gehört. Ein Regenschirmzeichen kann drei Byte benötigen. Die Anzahl der sichtbaren Zeichen und die Zahl der Bytes müssen deshalb nicht gleich sein.
Unicode ist der Zeichenstandard; UTF-8 ist eine Methode, Unicode-Codepunkte als Bytes zu speichern. Die beiden Begriffe sind nicht austauschbar.
Wodurch Darstellungsfehler entstehen
Nicht jedes falsche Symbol hat dieselbe Ursache. Prüfe drei Fälle getrennt.
- Falsche Dekodierung: Die gespeicherten Bytes sind vorhanden, werden aber nach einer unpassenden Kodierung gelesen. Dann kann Zeichensalat entstehen.
- Begrenzte Zielkodierung: Ein Zeichen ist dort nicht darstellbar. Wird trotzdem gespeichert, kann es verloren gehen oder durch ein Fragezeichen ersetzt werden.
- Fehlende Glyphe: Der Codepunkt ist korrekt gespeichert, aber die verwendete Schriftart besitzt keine passende sichtbare Form. Dann erscheint oft ein Ersatzsymbol.
Du speicherst ein Regenschirmzeichen in einer begrenzten Kodierung, die dieses Zeichen nicht enthält. Nach einer Warnung speicherst du trotzdem; beim erneuten Öffnen steht dort nur ?. Das Problem liegt nicht am Unicode-Standard, sondern an der ungeeigneten Zielkodierung und dem dadurch entstandenen Zeichenverlust.
Wie du selbst codierst und decodierst
Für diese Übung gilt eine kleine, eigens vorgegebene Zeichentabelle. Sie ist kein Unicode-Ausschnitt, sondern zeigt das Grundprinzip einer Kodierung.
| Zeichen | Code |
|---|---|
A | 00 |
B | 01 |
ä | 10 |
☂ | 11 |
Codiere B A ☂.
- Suche jedes Zeichen einzeln in der Tabelle.
Bwird zu01,Azu00und☂zu11.- Die codierte Folge lautet
01 00 11.
Zur Kontrolle decodierst du rückwärts: 01 ergibt B, 00 ergibt A und 11 ergibt ☂.
Deine Aufgabe
- Decodiere
10 01 00. - Erkläre, warum dieselbe Bitfolge ohne die Tabelle nicht eindeutig als Text verstanden werden kann.
Lösung: 10 steht für ä, 01 für B und 00 für A. Das Ergebnis lautet äBA. Ohne die vereinbarte Tabelle fehlt die Zuordnung zwischen den Bitpaaren und den Zeichen; ein anderes Format könnte dieselben Muster anders deuten.
Karteikasten
Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.
Alles auf einen Blick
- Unicode-Text
- Bedeutung
- Zeichen
- Codepunkt
- Speicherung
- UTF-8-Bytefolge
- andere UTF-Verfahren
- Darstellung
- Glyphe
- Schriftart
- Fehlerquellen
- falsche Dekodierung
- begrenzte Zielkodierung
- fehlende Glyphe
- Bedeutung
Abschluss-Check
Du hast den Kern verstanden, wenn du die Kette Zeichen → Codepunkt → Bytefolge → Glyphe erklären und bei Fehlern die betroffene Ebene bestimmen kannst.
Mit Google fortfahren