Begriff
ASCII (American Standard Code for Information Interchange)
Warum wichtig?
Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.
Der Ur-Großvater (1963).
Er definierte:
Nummer 65 = A.
Nummer 97 = a.
Nummer 32 = Leerzeichen.
Er benutzte nur 7 Bit (Zahlen 0 bis 127).
Das reichte für das englische Alphabet, Zahlen und !?..
Es reichte nicht für Deutsch (ä, ö), Französisch oder gar Chinesisch.
Trotzdem ist ASCII das Fundament. UTF-8 ist extra so gebaut, dass es ASCII "enthält".
Merksatz: Ein 7-Bit-Zeichenkodierungsstandard, der 128 Zeichen definiert (englische Buchstaben, Zahlen, Steuerzeichen) und die Basis für fast alle modernen Kodierungen bildet.
Heute benutzt man "reines" ASCII kaum noch, außer in sehr alten Protokollen oder Embedded Systems.
Aber: Wenn du eine Textdatei öffnest und nur englischen Text siehst, ist es technisch gesehen ASCII (und gleichzeitig gültiges UTF-8).
Unterschied:
Größe: ASCII war immer genau 1 Byte pro Zeichen (das 8. Bit war 0).
1. Steuerzeichen (Control Characters)
Die ersten 32 Zeichen (0-31) sieht man nicht. Sie steuerten früher den Fernschreiber (Teletype).
- 0 (NULL):
\0. Ende eines Strings in C. - 7 (BEL):
\a. Ließ früher eine echte Glocke klingeln. - 10 (LF) & 13 (CR): Zeilenumbruch. (Line Feed und Carriage Return). Bis heute der Unterschied zwischen Windows (
\r\n) und Unix (\n).
2. Extended ASCII (Die Hölle)
Da Computer 8 Bit (Byte) haben, war 1 Bit ungenutzt. Leute dachten: "Nutzen wir das für Umlaute!" (Zeichen 128-255). Problem: Jeder machte es anders.
- ISO-8859-1 (West-Europa): 228 =
ä. - ISO-8859-5 (Russland): 228 =
д. - CP437 (DOS): 228 =
Σ. Das führte zu "Mojibake" (Zeichensalat). Unicode hat das gelöst.
3. Binary vs. ASCII Transfer
Bei FTP gab es zwei Modi:
- ASCII: Umwandlung von Zeilenumbrüchen (CRLF <-> LF).
- Binary: Kopiert Byte für Byte exakt. Wer ein Bild im ASCII-Modus hochlud, zerstörte die Datei (weil zufällige Bytes wie Steuerzeichen aussahen und verändert wurden).
1. Hex-Values und Bitmasking (Der +32 Trick)
Die Erfinder von ASCII waren brillant darin, Bytes für damalige langsame CPUs zu optimieren.
Warum ist A = 65 (binär 0100 0001) und a = 97 (0110 0001)?
Weil sie sich exakt nur in einem einzigen Bit (dem 6. Bit) unterscheiden!
Um in C-Code "A" in "a" umzuwandeln (toLowerCase), musst du in ASCII nicht subtrahieren oder addieren. Du stülpst einfach eine Bitmaske drüber (Bitweises OR mit 32):
char lower = 'A' | 0x20;
Das war auf alten 8-Bit-Prozessoren rasend schnell.
2. 7-Bit vs 8-Bit Channeling
Die Internet-Protokolle der ersten Stunde (wie SMTP für E-Mails) waren hart auf 7-Bit-ASCII programmiert (weil alte Modems das 8. Bit verwarfen/für Parity nutzten).
Wie versendete man ein 8-Bit-Bild über eine 7-Bit-Leitung?
Mit Base64.
Base64 zerlegt drei 8-Bit-Blöcke (24 Bits) in vier 6-Bit-Blöcke. Da 6-Bit-Werte klein genug sind, um direkt in reine ASCII-Zeichen (A-Z, a-z, 0-9, +, /) gemappt zu werden, fließt das Bild als endloser, robuster ASCII-Text gefahrlos durch den Mailserver und wird beim Empfänger wieder zurück zu Binär "zusammengepuzzelt" (decodiert).
3. Z-W-S und die Grenzen des Steuer-Erbes
ASCII ist robust, aber seine Altlasten sterben nie.
Wer im Windows-Notepad einen Text speichert und bei Linux öffnet, flucht über das ^M (Carriage Return \r, ASCII 13) am Zeilenende.
Schlimmer: ASCII hat keine semantischen Lückenbüßer. Moderne Varianten von "Nicht-Darstellung" (wie das klägliche Zero-Width-Space aus dem Unicode) existieren im reinen ASCII nicht. Für Hacker boten die alten ASCII-Control-Chars (Backspace \b oder Delete) oft Lücken für Injektionen in alten Terminal-Emulatoren, weil das OS darstellbare und nicht-darstellbare Steuerzeichen aus dem exakt gleichen Datenstrom lesen musste (In-Band Signaling), statt über getrennte Kanäle.
Quick-Check
Warum 7 Bit?
Das 8. Bit wurde früher als "Paritäts-Bit" zur Fehlererkennung auf schlechten Leitungen genutzt.ASCII Art?
Bilder aus Textzeichen.:-)Früher Kunstform, weil Terminals keine Grafik konnten.EBCDIC?
Der böse Rivale von IBM-Großrechnern. Völlig inkompatibel zu ASCII (Awar nicht 65). Hat den Format-Krieg verloren.