EMZETT.
Login

ASCII und Zeichensätze: Wie Text im Computer entsteht

Kurz: Computer speichern nur Zahlen; ein Zeichensatz legt fest, welche Zahl welchem Buchstaben entspricht. ASCII war der Anfang, Unicode ist der heutige Standard.

Genauer: Wenn du ein „A“ tippst, speichert der Computer eine Zahl. Damit alle Programme dieselbe Zahl als „A“ lesen, braucht es eine Zuordnungstabelle: den Zeichensatz. Verschiedene Zeichensätze erklären, warum manchmal Umlaute als Kauderwelsch („ä“) erscheinen.

Im Detail

ASCII

ASCII (American Standard Code for Information Interchange, 1963) nutzt 7 Bit, also 128 Zeichen: Großbuchstaben A–Z (65–90), Kleinbuchstaben a–z (97–122), Ziffern 0–9 (48–57), Satzzeichen und Steuerzeichen wie Zeilenumbruch (10) und Tabulator (9). Umlaute und Sonderzeichen fehlen. Auswendig: A = 65, a = 97, Differenz 32 (ein Bit).

Erweiterungen und Chaos

Das achte Bit erlaubte 128 weitere Zeichen. Jede Region füllte sie anders: ISO-8859-1 (Latin-1) für Westeuropa mit Umlauten, Windows-1252, ISO-8859-5 (Kyrillisch) usw. Dieselbe Zahl bedeutete je nach Tabelle ein anderes Zeichen, und Texte aus anderen Sprachen waren nicht mischbar.

Unicode und UTF-8

Unicode gibt jedem Zeichen der Welt (über 150.000, inklusive Emoji) eine eindeutige Nummer, den Codepunkt (zum Beispiel U+00E4 für „ä“). UTF-8 speichert diese Codepunkte mit 1 bis 4 Byte: ASCII-Zeichen bleiben 1 Byte (kompatibel zu ASCII), Umlaute brauchen 2, viele Sonderzeichen 3, Emoji 4. UTF-8 ist heute der Standard im Web (über 98 % aller Seiten) und in den meisten Programmiersprachen.

Praxis und Fehlerbilder

  • Dateien und Seiten immer als UTF-8 speichern, im HTML <meta charset="utf-8"> setzen.
  • „ä“ statt „ä“ entsteht, wenn UTF-8-Text als Latin-1 gelesen wird (Mojibake).
  • Die Länge eines Textes in Zeichen und in Bytes sind verschiedene Dinge.
  • Mit ord('A') in Python erhält man den Codepunkt (65), mit chr(65) zurück das Zeichen.
  • Zeilenumbrüche: Unix \n, Windows \r\n.

Siehe auch: UTF-8 und Zeichenkodierung, Unicode, Binär, dezimal, hexadezimal, char (Zeichen)