Zeichensatzkodierung: ASCII, Unicode und UTF-8
Kurzantwort
Ein Zeichensatz ordnet jedem Zeichen eine Zahl zu, damit der Computer Text speichern kann. ASCII deckt mit 7 Bit nur 128 Zeichen ab – ohne Umlaute. Unicode vergibt für praktisch jedes Zeichen der Welt eine Nummer, UTF-8 ist die verbreitetste Art, diese Nummern zu speichern. Falsch dargestellte Umlaute entstehen fast immer, wenn Speicher- und Lesekodierung nicht zusammenpassen.
Teil des Lernpfads Hardware und Betriebssysteme · Schritt 2 von 13
Zuletzt aktualisiert am
„Grüße" wird zu „Grüße" – dieses Ärgernis kennt jeder, der schon mal eine CSV-Datei geöffnet oder Daten zwischen Systemen übertragen hat. Dahinter steckt kein Zufall, sondern ein Missverständnis über Zeichensätze. Wer es einmal versteht, behebt solche Fehler in Minuten.
Warum braucht ein Computer einen Zeichensatz?
Ein Computer speichert nur Zahlen aus Nullen und Einsen – Buchstaben kennt er nicht. Also braucht es eine vereinbarte Tabelle, die jedem Zeichen eine Nummer zuordnet.
ASCII: der Urahn
ASCII nutzt 7 Bit und kann damit 128 Zeichen darstellen: Groß- und Kleinbuchstaben von A bis Z, Ziffern, Satzzeichen und Steuerzeichen. Beispiel: Das große A ist die Zahl 65.
Das Problem: Für das englische Alphabet reicht das, für Umlaute, ß oder Akzente nicht. Deshalb entstanden viele nationale Erweiterungen auf 8 Bit (etwa ISO 8859-1 für Westeuropa) – und damit ein neues Problem: Dieselbe Zahl bedeutete je nach Tabelle ein anderes Zeichen.
Unicode: eine Nummer für jedes Zeichen
Unicode löst das grundsätzlich: Es vergibt für praktisch jedes Zeichen der Welt eine eindeutige Nummer, den sogenannten Codepoint – lateinische Buchstaben, Kyrillisch, Chinesisch, Emojis. Das ä hat weltweit dieselbe Unicode-Nummer.
UTF-8: die verbreitetste Kodierung
UTF-8 speichert Unicode-Nummern mit variabler Länge:
| Zeichen | Speicherbedarf in UTF-8 |
|---|---|
| A–Z, 0–9 (ASCII-Bereich) | 1 Byte |
| Umlaute, é, ñ | 2 Byte |
| Chinesische Zeichen | 3 Byte |
| Emojis | 4 Byte |
Der geniale Kniff: Für die alten ASCII-Zeichen braucht UTF-8 genau ein Byte mit demselben Wert wie in ASCII. Damit ist UTF-8 abwärtskompatibel – eine reine ASCII-Datei ist automatisch auch gültiges UTF-8. Deshalb hat sich UTF-8 im Web und in fast allen modernen Systemen durchgesetzt.
Woher kommt der Buchstabensalat?
Selbstkontrolle
Selbstkontrolle
Was ist der Unterschied zwischen Unicode und UTF-8?
Häufige Fragen
Was ist eine Zeichensatzkodierung?
Ein Zeichensatz ordnet jedem Zeichen eine Nummer zu, zum Beispiel Unicode. Die Kodierung legt fest, wie diese Nummer als Bytes gespeichert wird, zum Beispiel UTF-8. Mit Zeichensatzkodierung (auch Zeichenkodierung) meint man das Zusammenspiel von beidem: Damit Text richtig angezeigt wird, müssen Schreiber und Leser dieselbe Kodierung verwenden.
Warum reicht ASCII nicht aus?
ASCII deckt mit 7 Bit nur 128 Zeichen ab, im Wesentlichen das englische Alphabet mit Ziffern und Satzzeichen. Umlaute, ß, Akzente oder gar nichtlateinische Schriften sind darin nicht vorgesehen. Für deutschsprachige Texte und erst recht für internationale Anwendungen ist das viel zu wenig.
Wie viele Bytes braucht ein Zeichen in UTF-8?
Zwischen einem und vier, je nach Zeichen. Die klassischen ASCII-Zeichen belegen ein Byte, deutsche Umlaute zwei, viele asiatische Schriftzeichen drei und Emojis vier. Deshalb ist die Zeichenanzahl eines Textes nicht dasselbe wie seine Byte-Länge – ein häufiger Stolperstein beim Programmieren.
Was bedeutet abwärtskompatibel zu ASCII?
Es bedeutet, dass UTF-8 die 128 ASCII-Zeichen mit exakt demselben Byte-Wert speichert wie ASCII selbst. Eine Datei, die nur ASCII-Zeichen enthält, ist damit gleichzeitig eine gültige UTF-8-Datei. Alte Systeme und Werkzeuge können solche Dateien weiterhin problemlos lesen.
Wie behebe ich falsch dargestellte Umlaute?
Nicht durch Ersetzen der Zeichen, sondern indem du die Kodierung angleichst. Prüfe, in welcher Kodierung die Datei tatsächlich gespeichert ist, und stelle das lesende Programm darauf ein. Als dauerhafte Lösung sollten Editor, Datenbank, Webseite und Schnittstellen einheitlich auf UTF-8 stehen.
Weiterlesen: JSON und XML: Datenformate im Vergleich · Variablen und Datentypen einfach erklärt
Das Wichtigste in Kürze
- Ein Zeichensatz ordnet jedem Zeichen eine Zahl zu.
- ASCII: 7 Bit, nur 128 Zeichen – ohne Umlaute.
- Unicode: eine eindeutige Nummer (Codepoint) für praktisch jedes Zeichen der Welt.
- UTF-8: speichert diese Nummern mit 1 bis 4 Byte, abwärtskompatibel zu ASCII.
- Buchstabensalat entsteht, wenn Speicher- und Lesekodierung nicht zusammenpassen.