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.

Akzeptiert das Zeichen, den Code dezimal, hex (0x41 oder 41h), U+0041 oder den Namen. Die Suche gilt für beide Tabellen.
Spalten

Klicke auf eine Zelle, um den Wert zu kopieren.

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.

Alt-Codes der meistgesuchten Zeichen
ZeichenAlt+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 input

Ein 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  // 4

Warum 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 latin1 statt utf8mb4. 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 charset im Content-Type-Header. Der Browser rät die Kodierung.
  • Eine als "ANSI" gespeicherte Datei, was bei deutschem Windows Windows-1252 ist.
  • btoa akzeptiert nur Zeichen bis 255. btoa("€") wirft InvalidCharacterError, und btoa("ä") 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;                // 18

Die 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: