ASCII-Tabelle
Alle 128 ASCII-Codes in Dezimal, Hex, Oktal und Binär, mit HTML-Entität und JS-Escape. Weiter unten der Bereich 128 bis 255 von Windows-1252 und die Alt-Codes, mit denen du Ø, ß und andere Zeichen tippst.
Spalten
Klicke auf eine Zelle, um den Wert zu kopieren.
Tabelle A: ASCII, 0 bis 127
128 von 128 Codes
| Dez | Hex | Okt | Binär | Zeichen | Beschreibung |
|---|---|---|---|---|---|
| ^@ Nullzeichen (NUL) | |||||
| ^A Beginn der Kopfzeile (SOH) | |||||
| ^B Beginn des Textes (STX) | |||||
| ^C Ende des Textes (ETX), das Strg+C | |||||
| ^D Ende der Übertragung (EOT), das Strg+D | |||||
| ^E Anfrage (ENQ) | |||||
| ^F positive Bestätigung (ACK) | |||||
| ^G Klingel (BEL) | |||||
| ^H Rückschritt (BS) | |||||
| ^I Tabulator (TAB) | |||||
| ^J Zeilenvorschub (LF) | |||||
| ^K vertikaler Tabulator (VT) | |||||
| ^L Seitenvorschub (FF) | |||||
| ^M Wagenrücklauf (CR) | |||||
| ^N Shift Out (SO) | |||||
| ^O Shift In (SI) | |||||
| ^P Datenlink-Escape (DLE) | |||||
| ^Q Gerätesteuerung 1 (DC1), das XON | |||||
| ^R Gerätesteuerung 2 (DC2) | |||||
| ^S Gerätesteuerung 3 (DC3), das XOFF | |||||
| ^T Gerätesteuerung 4 (DC4) | |||||
| ^U negative Bestätigung (NAK) | |||||
| ^V Synchronisation (SYN) | |||||
| ^W Ende des Übertragungsblocks (ETB) | |||||
| ^X Abbruch (CAN) | |||||
| ^Y Ende des Datenträgers (EM) | |||||
| ^Z Ersatzzeichen (SUB), das Strg+Z | |||||
| ^[ Escape (ESC) | |||||
| ^\ Dateitrenner (FS) | |||||
| ^] Gruppentrenner (GS) | |||||
| ^^ Satztrenner (RS) | |||||
| ^_ Einheitentrenner (US) | |||||
| Leerzeichen | |||||
| Ausrufezeichen | |||||
| doppeltes Anführungszeichen | |||||
| Raute | |||||
| Dollarzeichen | |||||
| Prozentzeichen | |||||
| Und-Zeichen (Ampersand) | |||||
| einfaches Anführungszeichen (Apostroph) | |||||
| öffnende runde Klammer | |||||
| schließende runde Klammer | |||||
| Sternchen | |||||
| Plus | |||||
| Komma | |||||
| Bindestrich (Minuszeichen) | |||||
| Punkt | |||||
| Schrägstrich | |||||
| Ziffer 0 | |||||
| Ziffer 1 | |||||
| Ziffer 2 | |||||
| Ziffer 3 | |||||
| Ziffer 4 | |||||
| Ziffer 5 | |||||
| Ziffer 6 | |||||
| Ziffer 7 | |||||
| Ziffer 8 | |||||
| Ziffer 9 | |||||
| Doppelpunkt | |||||
| Semikolon | |||||
| kleiner als | |||||
| gleich | |||||
| größer als | |||||
| Fragezeichen | |||||
| At-Zeichen (Klammeraffe) | |||||
| Großbuchstabe A | |||||
| Großbuchstabe B | |||||
| Großbuchstabe C | |||||
| Großbuchstabe D | |||||
| Großbuchstabe E | |||||
| Großbuchstabe F | |||||
| Großbuchstabe G | |||||
| Großbuchstabe H | |||||
| Großbuchstabe I | |||||
| Großbuchstabe J | |||||
| Großbuchstabe K | |||||
| Großbuchstabe L | |||||
| Großbuchstabe M | |||||
| Großbuchstabe N | |||||
| Großbuchstabe O | |||||
| Großbuchstabe P | |||||
| Großbuchstabe Q | |||||
| Großbuchstabe R | |||||
| Großbuchstabe S | |||||
| Großbuchstabe T | |||||
| Großbuchstabe U | |||||
| Großbuchstabe V | |||||
| Großbuchstabe W | |||||
| Großbuchstabe X | |||||
| Großbuchstabe Y | |||||
| Großbuchstabe Z | |||||
| öffnende eckige Klammer | |||||
| umgekehrter Schrägstrich (Backslash) | |||||
| schließende eckige Klammer | |||||
| Zirkumflex | |||||
| Unterstrich | |||||
| Gravis (Backtick) | |||||
| Kleinbuchstabe a | |||||
| Kleinbuchstabe b | |||||
| Kleinbuchstabe c | |||||
| Kleinbuchstabe d | |||||
| Kleinbuchstabe e | |||||
| Kleinbuchstabe f | |||||
| Kleinbuchstabe g | |||||
| Kleinbuchstabe h | |||||
| Kleinbuchstabe i | |||||
| Kleinbuchstabe j | |||||
| Kleinbuchstabe k | |||||
| Kleinbuchstabe l | |||||
| Kleinbuchstabe m | |||||
| Kleinbuchstabe n | |||||
| Kleinbuchstabe o | |||||
| Kleinbuchstabe p | |||||
| Kleinbuchstabe q | |||||
| Kleinbuchstabe r | |||||
| Kleinbuchstabe s | |||||
| Kleinbuchstabe t | |||||
| Kleinbuchstabe u | |||||
| Kleinbuchstabe v | |||||
| Kleinbuchstabe w | |||||
| Kleinbuchstabe x | |||||
| Kleinbuchstabe y | |||||
| Kleinbuchstabe z | |||||
| öffnende geschweifte Klammer | |||||
| senkrechter Strich (Pipe) | |||||
| schließende geschweifte Klammer | |||||
| Tilde | |||||
| ^? Löschen (DEL) |
Tabelle B: 128 bis 255
128 von 128 Codes
| Dez | Hex | Windows-1252 | ISO-8859-1 | Unicode | UTF-8-Bytes | HTML | UTF-8 als Windows-1252 gelesen |
|---|---|---|---|---|---|---|---|
| C1-Steuerzeichen | |||||||
| kein Zeichen | C1-Steuerzeichen | ||||||
| C1-Steuerzeichen | |||||||
| C1-Steuerzeichen | |||||||
| C1-Steuerzeichen | |||||||
| C1-Steuerzeichen | |||||||
| C1-Steuerzeichen | |||||||
| C1-Steuerzeichen | |||||||
| C1-Steuerzeichen | |||||||
| C1-Steuerzeichen | |||||||
| C1-Steuerzeichen | |||||||
| C1-Steuerzeichen | |||||||
| C1-Steuerzeichen | |||||||
| kein Zeichen | C1-Steuerzeichen | ||||||
| C1-Steuerzeichen | |||||||
| kein Zeichen | C1-Steuerzeichen | ||||||
| kein Zeichen | C1-Steuerzeichen | ||||||
| C1-Steuerzeichen | |||||||
| C1-Steuerzeichen | |||||||
| C1-Steuerzeichen | |||||||
| C1-Steuerzeichen | |||||||
| C1-Steuerzeichen | |||||||
| C1-Steuerzeichen | |||||||
| C1-Steuerzeichen | |||||||
| C1-Steuerzeichen | |||||||
| C1-Steuerzeichen | |||||||
| C1-Steuerzeichen | |||||||
| C1-Steuerzeichen | |||||||
| C1-Steuerzeichen | |||||||
| kein Zeichen | C1-Steuerzeichen | ||||||
| C1-Steuerzeichen | |||||||
| C1-Steuerzeichen | |||||||
Dieser Bereich ist kein ASCII. Er wird meist "erweitertes ASCII" genannt, und jede Tabelle belegt ihn anders. Die Tabelle zeigt Windows-1252 und ISO-8859-1 nebeneinander, dazu die UTF-8-Bytes und das, was erscheint, wenn UTF-8 als Windows-1252 gelesen wird.
Die Codes 0x81, 0x8D, 0x8F, 0x90 und 0x9D haben in Windows-1252 kein Zeichen. In ISO-8859-1 besteht der ganze Bereich 128 bis 159 aus C1-Steuerzeichen.
Alt-Codes unter Windows
Halte Alt gedrückt und tippe die Zahl auf dem Ziffernblock (die Zahlenreihe oben funktioniert nicht). Ohne führende Null nutzt Alt+NNN die CP850, die Codepage der Windows-Konsole auf Deutsch, Spanisch, Französisch und Portugiesisch (in den USA ist es die CP437). Mit führender Null nutzt Alt+0NNN Windows-1252.
| Zeichen | Alt+NNN (CP850) | Alt+0NNN (Windows-1252) |
|---|---|---|
| gibt es nicht | ||
Was ASCII ist
ASCII ist eine Tabelle mit 128 Codes, von 0 bis 127, die 7 Bit pro Zeichen nutzt. Sie entstand in den 1960er Jahren als amerikanischer Standard (ANSI X3.4) und ist in RFC 20 beschrieben. Sie enthält die Buchstaben ohne Akzente, die Ziffern, die Satzzeichen und 33 Steuerzeichen, die nicht auf dem Bildschirm erscheinen.
Alles über 127 ist kein ASCII mehr, auch wenn jemand es "erweitertes ASCII" nennt.
Steuerzeichen, die dir noch täglich begegnen
Von den 33 Steuerzeichen sind die meisten außer Gebrauch, aber ein paar triffst du jede Woche. NUL (0) beendet einen String in C und taucht in Binärdateien auf. TAB (9) ist der Tabulator. LF (10) und CR (13) bilden den Zeilenumbruch: Linux und macOS nutzen nur LF, Windows nutzt das Paar CR und LF (CRLF). ESC (27) leitet die Farbsequenzen im Terminal ein, und DEL (127) ist das einzige Steuerzeichen außerhalb von 0 bis 31.
Der Unterschied beim Zeilenumbruch verursacht echte Fehler, etwa ein Shell-Skript, das wegen eines CR am Zeilenende nicht läuft. Git kann beim Commit und beim Checkout umwandeln, je nach core.autocrlf: true unter Windows und input auf Mac und Linux löst es meist. In einer CSV wird ein Zeilenumbruch innerhalb eines Feldes nur dann richtig gelesen, wenn das Feld in Anführungszeichen steht.
git config --global core.autocrlf inputEin einziges "erweitertes ASCII" gibt es nicht
Wer "erweitertes ASCII" sagt, meint fast immer eine von drei Tabellen: ISO-8859-1, Windows-1252 oder CP850. Sie stimmen von 0 bis 127 überein und weichen darüber ab. Und der Browser behandelt "latin1" nicht einmal als ISO-8859-1: Nach dem WHATWG Encoding Standard werden "latin1", "iso-8859-1" und sogar "ascii" als Windows-1252 gelesen.
ISO-8859-1 (von 1987) belegt 128 bis 159 mit C1-Steuerzeichen, die niemand tippt. Windows-1252 setzt in diese 32 Codes nützliche Symbole wie €, “ ”, … und •, und lässt nur fünf leer. CP850 ist etwas anderes: Es ist die Codepage der Windows-Konsole und der Alt-Codes, und dort hat das "ß" den Wert 225, nicht 223.
Wenn du eine dieser Tabellen brauchst, nenne sie beim Namen. "ASCII" reicht nur bis 127.
ASCII, Unicode und UTF-8
Unicode ist die Liste aller Zeichen, und UTF-8 ist die häufigste Art, sie als Bytes zu speichern. Von 0 bis 127 nutzt UTF-8 ein Byte mit demselben Wert wie ASCII, eine reine ASCII-Datei ist also in beiden identisch. Darüber belegt jedes Zeichen 2 bis 4 Bytes: ein Buchstabe mit Akzent 2, ein Symbol wie € 3 und ein Emoji 4.
Das zählt, wenn das Limit in Bytes gilt, etwa bei einer Datenbankspalte oder einem Header. Der Zeichen- und Wortzähler zeigt beide Zahlen nebeneinander. In JavaScript zählt length Code Units, nicht Zeichen oder Bytes:
"ç".length // 1
new TextEncoder().encode("ç").length // 2
"😀".length // 2
new TextEncoder().encode("😀").length // 4Warum aus "ß" ein "ß" wird
Das "ß" in UTF-8 belegt zwei Bytes, C3 und 9F. Liest ein Programm diese Bytes als Windows-1252, wird jedes Byte zu einem eigenen Zeichen: C3 ist "Ã", und 9F ist "Ÿ". Daher das "ß" statt "ß". Fast immer ist ein Ende falsch eingestellt: die Datenbank in latin1, die CSV ohne BOM gespeichert, der Content-Type-Header ohne charset oder die Datei als "ANSI" gespeichert.
Die häufigsten Ursachen:
- Eine MySQL-Tabelle in
latin1stattutf8mb4. Die Daten gehen richtig hinein und falsch heraus, oder umgekehrt. - Eine UTF-8-CSV, in Excel ohne BOM geöffnet. Excel nimmt die Windows-Codepage an und zeigt Mojibake.
- Eine HTTP-Antwort ohne
charsetimContent-Type-Header. Der Browser rät die Kodierung. - Eine als "ANSI" gespeicherte Datei, was bei deutschem Windows Windows-1252 ist.
btoaakzeptiert nur Zeichen bis 255.btoa("€")wirftInvalidCharacterError, undbtoa("ä")funktioniert, kodiert aber das Byte E4 (latin1), nicht C3 A4 (UTF-8). Für Base64 von UTF-8 wandle zuerst in Bytes um. Das macht der Base64-Decoder.
btoa("€"); // InvalidCharacterError
btoa("ç"); // "5w==" (byte E7)
btoa(String.fromCharCode(...new TextEncoder().encode("ç"))); // "w6c=" (bytes C3 A7)ALTER TABLE clientes CONVERT TO CHARACTER SET utf8mb4;Beim Hash ist es dasselbe Problem: Der SHA-256 von "ß" ist in latin1 (Byte DF) und in UTF-8 (Bytes C3 9F) nicht derselbe. Wenn ein Hash nicht zu dem eines anderen Systems passt, prüfe die Textkodierung im Hash-Generator.
ASCII im Code
Die Tabelle erklärt Tricks, die in allerlei Code auftauchen. Groß- und Kleinbuchstaben unterscheiden sich um 32 (ein einziges Bit), und die Ziffern "0" bis "9" liegen bei 48 bis 57, sodass c - '0' in C oder Java das Zeichen in eine Zahl verwandelt. In Regex erfasst [ -~] die druckbaren Zeichen, vom Leerzeichen (32) bis zur Tilde (126).
"a".charCodeAt(0) - "A".charCodeAt(0); // 32
"7".charCodeAt(0) - "0".charCodeAt(0); // 7
/^[ -~]*$/.test("Olá"); // false
"B".charCodeAt(0) - 48; // 18Die alphanumerische brasilianische CNPJ nutzt dieselbe Idee. Für die Prüfziffer zählt jedes Zeichen als sein ASCII-Code minus 48: "0" bis "9" bleiben 0 bis 9, "A" ist 17, "B" ist 18 und so weiter bis "Z", das 42 ist. Um das in Aktion zu sehen, nutze den CNPJ-Generator oder prüfe eine Nummer im CNPJ-Validator.
HTML-Entitäten und Escapes
In HTML brauchst du eine Entität nur für Zeichen, die der Parser als Markup liest: &, < und >, dazu " in Attributen. ist das geschützte Leerzeichen, Code 160, und nicht dasselbe wie das normale Leerzeichen (32).
Steht die Seite in UTF-8, können Umlaute und Symbole direkt ins HTML: Du brauchst weder ß noch ß. In JavaScript und JSON hilft das Escape \u00df, wenn die Datei nicht UTF-8 ist, und \n, \t und \ sind die Kurzformen. In einer URL wird das "ß" zu %C3%9F, seinen UTF-8-Bytes.
Alt-Codes unter Windows
Der Alt-Code ist kein ASCII. Alt+NNN ohne Null nutzt unter Windows auf Deutsch, Spanisch, Französisch und Portugiesisch die CP850: Alt+225 tippt das "ß" und Alt+157 das "Ø". Alt+0NNN mit führender Null nutzt Windows-1252: Alt+0223 tippt dasselbe "ß". Die Zahl ändert sich, weil sich die Tabelle ändert.
Tippe immer auf dem Ziffernblock, mit eingeschaltetem Num-Lock. Bei einem Laptop ohne Ziffernblock ist es am einfachsten, das Zeichen aus der Tabelle oben zu kopieren.
Quellen
Geprüft am 3. November 2026: