ASCII und Unicode: Was sie sind und wozu sie dienen

Ein Computer versteht nur Zahlen, also ist jeder Buchstabe auf dem Bildschirm ein Code. ASCII war die erste Codetabelle, die zum Standard wurde, und Unicode ist die, die wir heute nutzen, um in jeder Sprache zu schreiben. Hier siehst du, wie sie funktionieren, welche Codes du kennen solltest, warum manchmal seltsame Zeichen statt Umlauten erscheinen und wie du alles in der Tabelle nachschlägst.

Aktualisiert:

Was eine Zeichenkodierung ist

Eine Kodierung ist eine Vereinbarung: „Die Zahl 65 bedeutet den Buchstaben A“. Wenn du einen Text schreibst, speichert das Programm diese Zahlen; wenn eine andere Person ihn öffnet, übersetzt ihr Programm sie mit derselben Vereinbarung zurück in Buchstaben. Verwenden beide nicht dieselbe Tabelle, kommt der Text falsch an.

Zwei Ideen muss man trennen. Die eine ist der Zeichensatz, die Liste, welche Zahlen zu welchen Symbolen gehören. Die andere ist, wie diese Zahlen in Bytes gespeichert werden. Bei ASCII fallen beide auf triviale Weise zusammen; bei Unicode nicht, und da kommt UTF-8 ins Spiel.

ASCII: 128 Zeichen mit 7 Bit

ASCII (die Abkürzung steht für American Standard Code for Information Interchange) wurde in den 1960er-Jahren standardisiert. Es nutzt 7 Bit, also 2 hoch 7 = 128 Codes, von 0 bis 127. Davon sind 33 Steuerzeichen (0 bis 31 und 127) und 95 druckbar (32 bis 126, einschließlich Leerzeichen).

Es enthält keine Buchstaben mit Akzent, keine Umlaute und kein Eurozeichen: Es wurde für Englisch entworfen. Das erklärt, warum später weitere Tabellen nötig wurden.

Die Codes, die dir am häufigsten begegnen. Das Leerzeichen (32) gilt als druckbar, obwohl man es nicht sieht.
SteuerzeichenDezimalHexadezimalBinär (7 Bit)Wofür es dient
Null (NUL)0000000000Markiert in mehreren Sprachen das Ende einer Zeichenkette
Horizontaler Tabulator (TAB)9090001001Springt zum nächsten Tabstopp
Zeilenvorschub (LF)100A0001010Springt in die nächste Zeile
Wagenrücklauf (CR)130D0001101Geht an den Zeilenanfang zurück
Escape (ESC)271B0011011Leitet Steuersequenzen ein
Leerzeichen32200100000Erstes druckbares Zeichen
Löschen (DEL)1277F1111111Löscht das Zeichen

Zusammenhänge, die du dir merken solltest

Die Tabelle ist nicht zufällig geordnet. Mit ein paar Regelmäßigkeiten kannst du Codes auswendig lesen.

Zeilenende: LF, CR und CRLF

Ein Zeilenumbruch wirkt einfach, wird aber je nach System unterschiedlich geschrieben. Unix, Linux und macOS verwenden ein einziges Zeichen, LF (10). Windows nutzt zwei hintereinander, CR und LF (13 und 10), bekannt als CRLF. Die alten Fernschreiber brauchten zwei verschiedene Befehle: den Wagen an den Anfang zurückbringen und das Papier um eine Zeile vorschieben.

Dieser Unterschied ist die Ursache für Dateien, die in einem einfachen Editor in einer einzigen Zeile erscheinen oder am Ende jeder Zeile ein seltsames Zeichen zeigen. Willst du wissen, welchen Code jedes hat, schreibe LF oder CR in die Suche der ASCII-Tabelle.

Das „erweiterte ASCII“ ist kein Standard

Da ein Byte 8 Bit hat und ASCII nur 7 nutzt, blieben 128 freie Codes (128 bis 255), und jeder Hersteller und jede Region füllte sie auf ihre Weise. Das nennt man „erweitertes ASCII“, aber es gibt keine einzelne Tabelle: Es gibt viele, sogenannte Codepages. Zwei der bekanntesten sind Latin-1 (ISO-8859-1), in der das é der Code 233 ist, und Windows-1252, ähnlich, aber mit Unterschieden bei den Codes 128 bis 159 (dort liegt zum Beispiel der Euro).

Das Problem: Der Code 233 bedeutet in einer Tabelle „é“ und in einer anderen etwas anderes. Ein Text, der mit einer Tabelle geschrieben und mit einer anderen gelesen wurde, zeigte Datenmüll. Unicode entstand, um dieses Durcheinander zu beenden.

Unicode und UTF-8

Unicode weist jedem Zeichen fast aller Schriftsysteme der Welt, dazu Symbolen und Emojis, eine eindeutige Zahl zu, den Codepunkt. Heute sind es mehr als 150.000 Zeichen. Er wird mit dem Präfix U+ und hexadezimal geschrieben: Das „A“ ist U+0041, das „ñ“ ist U+00F1, der Euro ist U+20AC und das lächelnde Gesicht ist U+1F600. Die ersten 128 Codepunkte sind genau die von ASCII.

UTF-8 ist die am häufigsten genutzte Art, diese Zahlen in Bytes zu speichern, und verwendet je nach Zeichen 1 bis 4. Die 128 von ASCII belegen ein einziges Byte, identisch zu früher, ein ASCII-Text ist also auch ein gültiger UTF-8-Text. Der Rest belegt mehr Bytes.

Je weiter vom ASCII entfernt, desto mehr Bytes belegt das Zeichen.
ZeichenCodepunktBytes in UTF-8Bytes (hexadezimal)
AU+0041141
äU+00E42C3 A4
ñU+00F12C3 B1
€U+20AC3E2 82 AC
😀U+1F6004F0 9F 98 80

Warum „ä“ statt „ä“ erscheint

Das ist der häufigste Fehler, und er hat eine exakte Erklärung. Das ä besteht in UTF-8 aus zwei Bytes: C3 und A4. Glaubt ein Programm, der Text sei in Latin-1, liest es jedes Byte als ein Zeichen: C3 ist „Ó und A4 ist „¤“. Ergebnis: „ä“. Dasselbe passiert mit „ö“, das als „ö“ erscheint, und mit „schön“, das als „schön“ angezeigt wird.

Die Lösung ist fast immer, dem Programm zu sagen, dass es die Datei als UTF-8 öffnen soll (in einem Texteditor oder in den Importeinstellungen einer Tabellenkalkulation). Passiert es umgekehrt, ein Latin-1-Text wird als UTF-8 gelesen, erscheinen meist Rauten mit Fragezeichen, weil diese einzelnen Bytes keine gültigen UTF-8-Folgen bilden.

So nutzt du die ASCII-Tabelle und den Umrechner

Das Tool „ASCII-Tabelle“ zeigt die 128 Zeichen mit ihrem Code dezimal, hexadezimal, oktal und binär sowie den Namen der Steuerzeichen.

  1. Gib in der Suche ein Zeichen, einen Code oder den Namen eines Steuerzeichens ein (zum Beispiel A, 65, 41 oder LF), um seine Zeile zu finden.
  2. Nutze die Filtertasten (Steuerzeichen, Ziffern, Großbuchstaben, Kleinbuchstaben, Zeichen), um nur eine Gruppe zu sehen.
  3. Zum Umrechnen schreibst du einen Text in „Text“ und wählst das Format (dezimal, hexadezimal, oktal oder binär): Unten erscheinen die Codes. „Hallo“ ergibt dezimal 72 97 108 108 111 und hexadezimal 48 61 6C 6C 6F.
  4. Du kannst es auch umgekehrt machen: Füge durch Leerzeichen oder Kommas getrennte Codes in „Codes“ ein, und der Text entsteht. Hexadezimal werden Präfixe wie 0x41 akzeptiert.

Enthält der Text Zeichen, die nicht zu ASCII gehören, etwa das ä, weist das Tool darauf hin und zeigt ihren Unicode-Code. Um die echten Bytes in UTF-8 zu sehen, nutze „Text in Binär“: Das ä ergibt 11000011 10100100, zwei Bytes aus je 8 Bit. Die Grenzen: Die Tabelle zeigt nur das Standard-ASCII, nicht das erweiterte, und alles wird in deinem Browser berechnet, ohne den Text an einen Server zu senden.

Häufige Fragen

Wie viele Zeichen hat ASCII?

128, mit Codes von 0 bis 127 und je 7 Bit. Davon sind 33 Steuerzeichen und 95 druckbar, das Leerzeichen eingerechnet.

Wie lautet der ASCII-Code des Buchstabens A und des a?

Das „A“ ist 65 (41 hexadezimal, 01000001 binär) und das „a“ ist 97 (61 hexadezimal, 01100001 binär). Sie unterscheiden sich immer um 32.

Was ist der Unterschied zwischen ASCII und Unicode?

ASCII hat 128 Zeichen, gedacht für Englisch. Unicode hat mehr als 150.000, aus fast allen Sprachen und Emojis, und seine ersten 128 sind dieselben wie bei ASCII.

Was ist UTF-8?

Es ist die am häufigsten genutzte Art, Unicode-Text in Bytes zu speichern. Es verwendet 1 bis 4 Bytes pro Zeichen: Die von ASCII belegen eines, ein ä zwei und ein Emoji vier.

Warum zeigt mein Text „ä“ oder „ö“?

Weil ein in UTF-8 gespeicherter Text als Latin-1 gelesen wird. Öffne die Datei mit Angabe der Kodierung UTF-8, dann ist es behoben.