Skip to content

ASCII-Tabelle und ASCII-Konverter

Die vollständige ASCII-Tabelle: 128 Zeichen in Dezimal, Hex, Oktal und Binär, dazu ein Konverter in beide Richtungen. Steuerzeichen mit Escape-Sequenzen, Caret-Notation und dem Ort, an dem sie Ihnen wirklich begegnen.

Kein Tracking Läuft im Browser Kostenlos

Alles läuft in Ihrem Browser — Ihre Eingabe wird nie hochgeladen, protokolliert oder gespeichert.

Text und ASCII-Code, in beide Richtungen

Die vollständige ASCII-Tabelle (0-127)

128 / 128
Dez Hex Okt Binär Zeichen Name Escape Caret HTML Wo es Ihnen begegnet
0 00 000 00000000 NUL Null \0 ^@ � Ende einer C-Zeichenkette; trennt Dateinamen in find -print0 und xargs -0; lässt grep „Binary file matches“ melden.
1 01 001 00000001 SOH Start of Heading ^A  Das FIX-Protokoll nutzt es als Feldtrenner, weshalb FIX-Nachrichten wie eine einzige durchlaufende Zeile aussehen.
2 02 002 00000010 STX Start of Text ^B  Frame-Header in seriellen Protokollen, an Kassensystemen und Barcode-Scannern; tmux-Präfixtaste Strg+B.
3 03 003 00000011 ETX End of Text ^C  Strg+C sendet dieses Byte; die tty-Line-Discipline macht SIGINT daraus, Ihr Programm bekommt es nie zu sehen.
4 04 004 00000100 EOT End of Transmission ^D  Strg+D reicht die aktuelle Eingabezeile ein; ist die Zeile leer, liefert der Lesevorgang 0 Bytes — und das ist EOF.
5 05 005 00000101 ENQ Enquiry ^E  Alte Verbindungs-Handshakes; manche Terminals antworten darauf mit einer Kennung.
6 06 006 00000110 ACK Acknowledge ^F  Zusammen mit ENQ und NAK in alten Sicherungsschichtprotokollen; noch in industrieller Serientechnik zu sehen.
7 07 007 00000111 BEL Bell \a ^G  printf '\a' lässt die Glocke läuten; häufiger beendet es heute eine OSC-Sequenz, etwa zum Setzen des Fenstertitels.
8 08 010 00001000 BS Backspace \b ^H  Löschen in Fortschrittsbalken. Beachten Sie: Die meisten Terminals senden für Backspace 0x7F, nicht dieses Byte.
9 09 011 00001001 HT Character Tabulation \t ^I 	 Makefile-Rezepte müssen mit einem echten Tab beginnen; gofmt rückt mit Tabs ein; Tab und Strg+I sind dasselbe Byte.
10 0A 012 00001010 LF Line Feed \n ^J 
 Zeilenumbruch unter Unix und macOS; core.autocrlf von git wandelt zwischen diesem Byte und CRLF um.
11 0B 013 00001011 VT Line Tabulation \v ^K  Fast ausgestorben, zählt aber als Zeilenumbruch: splitlines() trennt daran, split("\n") nicht.
12 0C 014 00001100 FF Form Feed \f ^L  Seitenvorschub am Drucker; Strg+L leert das Terminal; Emacs nutzt es als Abschnittsmarke im Quelltext.
13 0D 015 00001101 CR Carriage Return \r ^M 
 Die erste Hälfte von Windows-CRLF; erscheint als ^M in git diff; verursacht „bad interpreter: /bin/bash^M“.
14 0E 016 00001110 SO Shift Out ^N  Schaltet in ISO 2022 auf den Alternativzeichensatz G1 um; klammert Doppelbyte-Bereiche auf EBCDIC-Großrechnern.
15 0F 017 00001111 SI Shift In ^O  Schaltet zurück auf den Standardzeichensatz G0, im Paar mit SO.
16 10 020 00010000 DLE Data Link Escape ^P  Escape-Präfix für Byte-Stuffing in älteren Binärprotokollen.
17 11 021 00010001 DC1 Device Control One ^Q  XON — Fortsetzen der Software-Flusssteuerung; Strg+Q taut die Terminalausgabe wieder auf.
18 12 022 00010010 DC2 Device Control Two ^R  Keine feste moderne Bedeutung. Strg+R in der Shell ist eine Readline-Tastenbelegung ohne Bezug zu diesem Code.
19 13 023 00010011 DC3 Device Control Three ^S  XOFF — Pause der Software-Flusssteuerung. Versehentliches Strg+S friert die Terminalausgabe am häufigsten ein.
20 14 024 00010100 DC4 Device Control Four ^T  Keine feste moderne Bedeutung; unter BSD und macOS ist Strg+T die Statustaste des tty.
21 15 025 00010101 NAK Negative Acknowledge ^U  Strg+U löscht die ganze Zeile — das ist die tty-Einstellung kill, nicht die ursprüngliche Bedeutung dieses Codes.
22 16 026 00010110 SYN Synchronous Idle ^V  Strg+V ist lnext: erst drücken, dann Tab, um in bash einen echten Tab einzugeben, ohne die Vervollständigung auszulösen.
23 17 027 00010111 ETB End of Transmission Block ^W  Strg+W löscht das vorherige Wort — die tty-Einstellung werase.
24 18 030 00011000 CAN Cancel ^X  ECMA-48 bricht damit eine unvollendete Steuersequenz ab; Terminals verwerfen die gerade geparste Sequenz.
25 19 031 00011001 EM End of Medium ^Y  Heute kaum noch genutzt; unter BSD und macOS ist Strg+Y verzögertes Suspendieren.
26 1A 032 00011010 SUB Substitute ^Z  Dateiendemarke in CP/M- und DOS-Textdateien — deshalb beendet man Eingaben in Windows-Konsolen mit Strg+Z.
27 1B 033 00011011 ESC Escape ^[  Beginn jeder ANSI-Escape-Sequenz: \033[0m setzt Farben zurück, \033[2J leert den Bildschirm. Strg+[ sendet es auch.
28 1C 034 00011100 FS File Separator ^\  Die MLLP-Rahmung von HL7 v2 nutzt es als Blockende; Strg+\ sendet SIGQUIT.
29 1D 035 00011101 GS Group Separator ^]  In GS1-Barcodes ist der FNC1-Trenner dieses Byte — das unsichtbare Trennzeichen, das Ihr Scanner ausgibt.
30 1E 036 00011110 RS Record Separator ^^  RFC 7464 JSON Text Sequences stellen es jedem Datensatz voran. Eine der wenigen lebendigen modernen Verwendungen.
31 1F 037 00011111 US Unit Separator ^_  Feldtrenner in strukturiertem Text, sicherer als ein Komma, weil er in den Nutzdaten nie vorkommt.
32 20 040 00100000 Space  
33 21 041 00100001 Exclamation Mark !
34 22 042 00100010 Quotation Mark "
35 23 043 00100011 Number Sign #
36 24 044 00100100 Dollar Sign $
37 25 045 00100101 Percent Sign %
38 26 046 00100110 Ampersand &
39 27 047 00100111 Apostrophe '
40 28 050 00101000 Left Parenthesis (
41 29 051 00101001 Right Parenthesis )
42 2A 052 00101010 Asterisk *
43 2B 053 00101011 Plus Sign +
44 2C 054 00101100 Comma ,
45 2D 055 00101101 Hyphen-Minus -
46 2E 056 00101110 Full Stop .
47 2F 057 00101111 Solidus /
48 30 060 00110000 Digit Zero 0
49 31 061 00110001 Digit One 1
50 32 062 00110010 Digit Two 2
51 33 063 00110011 Digit Three 3
52 34 064 00110100 Digit Four 4
53 35 065 00110101 Digit Five 5
54 36 066 00110110 Digit Six 6
55 37 067 00110111 Digit Seven 7
56 38 070 00111000 Digit Eight 8
57 39 071 00111001 Digit Nine 9
58 3A 072 00111010 Colon :
59 3B 073 00111011 Semicolon &#59;
60 3C 074 00111100 Less-Than Sign <
61 3D 075 00111101 Equals Sign =
62 3E 076 00111110 Greater-Than Sign >
63 3F 077 00111111 Question Mark ?
64 40 100 01000000 Commercial At @
65 41 101 01000001 Latin Capital Letter A A
66 42 102 01000010 Latin Capital Letter B B
67 43 103 01000011 Latin Capital Letter C C
68 44 104 01000100 Latin Capital Letter D D
69 45 105 01000101 Latin Capital Letter E E
70 46 106 01000110 Latin Capital Letter F F
71 47 107 01000111 Latin Capital Letter G G
72 48 110 01001000 Latin Capital Letter H H
73 49 111 01001001 Latin Capital Letter I I
74 4A 112 01001010 Latin Capital Letter J J
75 4B 113 01001011 Latin Capital Letter K K
76 4C 114 01001100 Latin Capital Letter L L
77 4D 115 01001101 Latin Capital Letter M M
78 4E 116 01001110 Latin Capital Letter N N
79 4F 117 01001111 Latin Capital Letter O O
80 50 120 01010000 Latin Capital Letter P P
81 51 121 01010001 Latin Capital Letter Q Q
82 52 122 01010010 Latin Capital Letter R R
83 53 123 01010011 Latin Capital Letter S S
84 54 124 01010100 Latin Capital Letter T T
85 55 125 01010101 Latin Capital Letter U U
86 56 126 01010110 Latin Capital Letter V V
87 57 127 01010111 Latin Capital Letter W W
88 58 130 01011000 Latin Capital Letter X X
89 59 131 01011001 Latin Capital Letter Y Y
90 5A 132 01011010 Latin Capital Letter Z Z
91 5B 133 01011011 Left Square Bracket [
92 5C 134 01011100 Reverse Solidus \
93 5D 135 01011101 Right Square Bracket ]
94 5E 136 01011110 Circumflex Accent ^
95 5F 137 01011111 Low Line _
96 60 140 01100000 Grave Accent `
97 61 141 01100001 Latin Small Letter A a
98 62 142 01100010 Latin Small Letter B b
99 63 143 01100011 Latin Small Letter C c
100 64 144 01100100 Latin Small Letter D d
101 65 145 01100101 Latin Small Letter E e
102 66 146 01100110 Latin Small Letter F f
103 67 147 01100111 Latin Small Letter G g
104 68 150 01101000 Latin Small Letter H h
105 69 151 01101001 Latin Small Letter I i
106 6A 152 01101010 Latin Small Letter J j
107 6B 153 01101011 Latin Small Letter K k
108 6C 154 01101100 Latin Small Letter L l
109 6D 155 01101101 Latin Small Letter M m
110 6E 156 01101110 Latin Small Letter N n
111 6F 157 01101111 Latin Small Letter O o
112 70 160 01110000 Latin Small Letter P p
113 71 161 01110001 Latin Small Letter Q q
114 72 162 01110010 Latin Small Letter R r
115 73 163 01110011 Latin Small Letter S s
116 74 164 01110100 Latin Small Letter T t
117 75 165 01110101 Latin Small Letter U u
118 76 166 01110110 Latin Small Letter V v
119 77 167 01110111 Latin Small Letter W w
120 78 170 01111000 Latin Small Letter X x
121 79 171 01111001 Latin Small Letter Y y
122 7A 172 01111010 Latin Small Letter Z z
123 7B 173 01111011 Left Curly Bracket {
124 7C 174 01111100 Vertical Line |
125 7D 175 01111101 Right Curly Bracket }
126 7E 176 01111110 Tilde ~
127 7F 177 01111111 DEL Delete ^?  Was Ihre Backspace-Taste auf den meisten Terminals sendet. Nach dem Lochstreifen benannt: alle sieben Löcher gestanzt.

Die Binärspalte ist zur besseren Lesbarkeit auf 8 Bit aufgefüllt. ASCII selbst ist ein 7-Bit-Code — das oberste Bit ist immer 0, und genau das lässt UTF-8 abwärtskompatibel dazu bleiben.

Und was ist mit 128-255?

ASCII definiert 128-255 überhaupt nicht. „Erweitertes ASCII“ ist der Name keines Standards — es ist ein loser Sammelbegriff für eine ganze Familie von 8-Bit-Kodierungen. Dasselbe Byte ist in jeder davon ein anderes Zeichen:

Byte ISO-8859-1 Windows-1252 CP437 CP866
0x80 U+0080 C1-Steuerzeichen (unsichtbar) Ç А
0x93 U+0093 C1-Steuerzeichen (unsichtbar) ô У
0xB0 ° °
0xE9 é é Θ щ
0xFF ÿ ÿ U+00A0 U+00A0
Die Zeichenklassifizierungen werden zur Testzeit gegen Unicodes eigene Kategorien gegengeprüft, und die Windows-1252-Zuordnung wird Byte für Byte gegen den Decoder der Plattform verifiziert. — Go-Tools Engineering · Sep 2, 2026

Jeder Wert in der Tabelle stammt aus einer einzigen Engine, die sowohl der Server als auch der Browser ausführt, deshalb können das, was ein Crawler liest, und das, womit Sie interagieren, nie auseinanderdriften. Die Escape-Unterschiede zwischen den Sprachen wurden durch Kompilieren und Ausführen des Codes in jeder Sprache überprüft, nicht aus dem Gedächtnis zitiert.

Kurzreferenz

Was ist der ASCII-Code für A?

A = 65 Das große `A` ist 65 dezimal, `0x41` hexadezimal, `101` oktal und `01000001` binär. Das kleine `a` ist 97 — genau 32 mehr, und das ist ein einziges Bit.

Wie viele Zeichen hat ASCII?

128 128, nummeriert von 0 bis 127. Das sind 32 Steuerzeichen, 95 grafische Zeichen einschließlich des Leerzeichens und DEL.

Was ist ASCII 0?

0 = NUL NUL, das Nullzeichen. Es beendet Zeichenketten in C, trennt Dateinamen in `find -print0` und lässt `grep` eine Datei als binär behandeln.

Welches Byte ist ein Zeilenumbruch?

LF = 10, CR = 13 Line Feed ist 10 (`0x0A`, `\n`). Carriage Return ist 13 (`0x0D`, `\r`). Windows-Zeilenenden sind beide, CR zuerst.

Was ist ASCII?

ASCII ist eine 7-Bit-Zeichenkodierung — 128 Codepunkte, nummeriert von 0 bis 127, und keiner mehr. Veröffentlicht wurde sie zuerst als ASA X3.4-1963, ihre aktuelle Form ist ANSI X3.4-1986; RFC 20 beschreibt ihre Verwendung im Internet und wurde 2015 zum Internet Standard STD 80 erhoben. Die erste Fassung hatte überhaupt keine Kleinbuchstaben; die kamen erst mit der Revision von 1967. Alles oberhalb von 127 gehört zu irgendeiner anderen Kodierung, nicht zu ASCII.

0x00-0x1F   32 C0 control characters
0x20         1 space (a graphic character, not a control)
0x21-0x7E   94 printable graphic characters
0x7F         1 DEL (a control character, but not part of C0)
            ---
            128 total

Was diese Tabelle Ihnen gibt

Alle vier Basen nebeneinander

Dezimal, hexadezimal, oktal und 8-Bit-binär für jeden einzelnen der 128 Codepunkte, mit der führenden Null, die daran erinnert, dass ASCII in Wahrheit 7-bittig ist.

Escape-Sequenzen pro Sprache

Die Spalte \0 \a \b \t \n \v \f \r plus die Unterschiede, die tatsächlich Builds zerlegen — JavaScript hat kein \a, Java hat weder \a noch \v, und \e ist eine GNU-Erweiterung statt ISO C.

Caret-Notation

Die Spalte von ^@ bis ^? und die eine Regel, die alle 33 Steuerzeichen abdeckt: das Byte mit 0x40 XOR-verknüpfen. Nicht addieren, nicht subtrahieren — XOR.

Wo Ihnen jedes Steuerzeichen wirklich begegnet

Nicht bloß „SOH — Start of Heading“, sondern dass Nachrichten des FIX-Protokolls es als Feldtrenner verwenden, dass 0x1D der unsichtbare Trenner ist, den Ihr Barcode-Scanner ausgibt, und dass ein mit Strg+S eingefrorenes Terminal XOFF ist.

Ein Konverter, der nicht rät

Sie wählen die Basis. Bytes über 127 werden abgelehnt, mit einem Hinweis darauf, wie sie sich in Windows-1252 und ISO-8859-1 lesen würden, statt als ASCII durchzugehen.

Steuerzeichen bleiben sichtbar

NUL, TAB und CR haben keine Glyphe, deshalb zeigt die Vorschau sie als Unicode Control Pictures. Die Kopierschaltfläche liefert Ihnen weiterhin die echten Bytes.

Verwandte Kodierungen

ISO/IEC 8859-1 (Latin-1)

8 Bit, ein Byte

Hält 0-127 identisch zu ASCII und definiert 96 grafische Zeichen von 0xA0 bis 0xFF. Der Bereich 0x80-0x9F bleibt unsichtbaren C1-Steuerzeichen überlassen.

Windows-1252

8 Bit, ein Byte

Eine Obermenge von ISO-8859-1, deren einziger Unterschied 0x80-0x9F ist: dort setzt sie 27 druckbare Zeichen und lässt 5 undefiniert. Browser verwenden sie immer dann, wenn eine Seite ISO-8859-1 angibt.

CP437

8 Bit, ein Byte

Die ursprüngliche Codepage des IBM PC. Ihre obere Hälfte besteht aus Buchstaben mit Akzent, griechischen Buchstaben und Rahmenzeichen — das sind die Tabellen, die Sie in Artikeln sehen, die 256 ASCII-Zeichen versprechen.

UTF-8

Variabel, 1-4 Bytes

Kodiert ganz Unicode und hält dabei jedes ASCII-Byte Byte für Byte identisch. Abwärtskompatibel zu US-ASCII, aber zu keiner der 8-Bit-Codepages darüber.

Beispiele

Text in Dezimalcodes

Hello
72 101 108 108 111

Jedes Zeichen wird zu seinem dezimalen Codepunkt. Großbuchstaben laufen von 65 bis 90, Kleinbuchstaben von 97 bis 122 — genau 32 auseinander, und deshalb schaltet das Kippen von Bit 5 zwischen Groß- und Kleinschreibung um.

Dieselben Codes, in zwei Basen gelesen

41 42 43
hex -> ABC     decimal -> )*+

Genau deshalb rät der Konverter die Basis nie für Sie. Beide Lesarten sind gültig; nur Sie wissen, welche gemeint war.

Steuerzeichen überstehen den Hin- und Rückweg

9 10 13 0
TAB, LF, CR, NUL

Im Ausgabefeld sind sie unsichtbar, deshalb zeigt die Vorschauzeile sie als Zeichen aus dem Unicode-Block Control Pictures. Die Kopierschaltfläche kopiert weiterhin die echten Bytes, nicht die Platzhalter.

Bytes über 127 werden abgelehnt — mit Begründung

233
Outside ASCII (0-127)

233 ist kein ASCII-Code. Das Tool sagt Ihnen, dass sich das Byte in Windows-1252 wie in ISO-8859-1 als é liest, gibt es aber nicht als ASCII aus.

So gehen Sie vor

  1. 1

    Basis wählen

    Dezimal, hexadezimal, oktal oder binär. Machen Sie das zuerst — dieselben Ziffern werden in jeder Basis anders dekodiert, und das Tool rät bewusst nicht.

  2. 2

    Auf einer der beiden Seiten tippen

    Text links, Codes rechts. Auf welcher Seite Sie auch tippen, die andere aktualisiert sich.

  3. 3

    Die Hinweise lesen

    Zeichen außerhalb von 0-127 werden mit Codepunkt und UTF-8-Bytes aufgelistet, statt stillschweigend zu verschwinden oder zu Fragezeichen zu werden.

  4. 4

    Die Tabelle als Nachschlagewerk nutzen

    Auf Steuerzeichen filtern, nach Code oder Name suchen und ein Zeichen per Klick kopieren.

Fehler, die man kennen sollte

Behaupten, ASCII habe 256 Zeichen

ASCII endet bei 127. Alles darüber gehört zu einer bestimmten 8-Bit-Codepage, die benannt werden muss. Python sagt Ihnen das direkt, wenn Sie es bitten, ein Zeichen mit Akzent als ASCII zu kodieren.

✗ Falsch
'cafe\u00e9'.encode('ascii')  # UnicodeEncodeError: ordinal not in range(128)
✓ Richtig
'cafe\u00e9'.encode('utf-8')   # b'cafe\xc3\xa9'

Annehmen, jede Sprache habe dieselben Escapes

JavaScript hat kein \a-Escape. Statt zu scheitern, lässt es den Backslash fallen und hinterlässt Ihnen den Buchstaben — und der Strict Mode hilft nicht.

✗ Falsch
"\a".charCodeAt(0)   // 97 - that is the letter 'a', not BEL
✓ Richtig
"\x07".charCodeAt(0) // 7 - BEL

Die Caret-Notation als Addition erklären

0x40 zu addieren funktioniert für den C0-Bereich und bricht dann bei DEL, wo Sie stattdessen subtrahieren müssten. XOR ist die eine Regel, die alle 33 abdeckt.

✗ Falsch
caret = chr(code + 0x40)   # 0x7F + 0x40 overflows past the table
✓ Richtig
caret = chr(code ^ 0x40)   # 0x00 -> @, 0x1B -> [, 0x7F -> ?

Wann Sie das brauchen

Einen Hexdump oder einen Protokollmitschnitt lesen
Sie haben Bytes und müssen wissen, welche davon druckbar sind, welche Trenner sind und welche Steuercodes das Terminal still ausführt.
Eine Datei debuggen, die sich seltsam verhält
Ein versprengtes CR am Ende jeder Zeile, ein NUL, das grep die Datei als binär einstufen lässt, oder ein TAB dort, wo ein Makefile eines verlangt hat.
Einen Parser oder einen Validator schreiben
Entscheiden, welche Byte-Bereiche akzeptiert werden, und die Grenzen richtig setzen — 0x21-0x7E für grafische Zeichen, 0x20 für das Leerzeichen, 0x7F für DEL.
Einen Kodierungsfehler erklären
Einer Kollegin oder einem Kollegen zeigen, warum dasselbe Byte je nach angenommener Codepage als drei verschiedene Zeichen auftaucht.

Technische Details

ASCII, Unicode und UTF-8
Die ersten 128 Codepunkte von Unicode, U+0000 bis U+007F, entsprechen eins zu eins ASCII. UTF-8 kodiert sie als einzelne Bytes 0x00-0x7F mit gelöschtem obersten Bit. Wichtig ist eigentlich die dritte Eigenschaft: jedes Byte einer UTF-8-Mehrbyte-Sequenz hat sein oberstes Bit gesetzt, ein Byte im Bereich 0-127 kann also nie Teil eines Nicht-ASCII-Zeichens sein. Genau das macht es sicher, UTF-8 byteweise nach /, \0 oder \n zu durchsuchen.
Das 8. Bit
ASCII definiert einen 7-Bit-Code; ein Zeichen pro 8-Bit-Byte zu speichern ist eine Konvention, und historisch war dieses übrige Bit oft ein Paritätsbit. Mail-Transporte, die nur 7-Bit-Transparenz garantierten, sind der Grund, warum es Base64 und Quoted-Printable gibt.
Warum das Alphabet so angeordnet ist, wie es ist
Die Ziffern 0-9 sitzen auf 0x30-0x39, das untere Nibble ist also der Wert selbst. A ist 0x41 und a ist 0x61 — ein Bit auseinander, c | 0x20 schreibt also klein und c & 0xDF schreibt groß. Aber nur bei Buchstaben: '_' | 0x20 ergibt 0x7F, und das ist DEL, und '[' | 0x20 ergibt {.
Nationale Varianten und das 0x5C-Problem
ISO/IEC 646 erlaubte, 12 Codepunkte je Land auszutauschen. Japans JIS X 0201 setzte ein Yen-Zeichen auf 0x5C, Koreas KS X 1003 ein Won-Zeichen — deshalb zeigt japanisches Windows Pfade mit einem Yen-Zeichen an, während das Byte weiterhin 0x5C ist. In Shift_JIS wird es noch unangenehmer: Dort kann das zweite Byte eines Zweibyte-Zeichens selbst 0x5C sein — die Zeichen für hyou, so, juu, nou, kou und bou enden alle darauf, naive Backslash-Behandlung zerteilt sie also mittendrin.

Richtig gemacht

Nennen Sie immer die Codepage
„Erweitertes ASCII“ sagt der Leserin und dem Leser nichts. Sagen Sie Windows-1252 oder ISO-8859-1 oder CP437 — dasselbe Byte ist in jeder davon ein anderes Zeichen.
Sagen Sie US-ASCII, wenn Sie es meinen
Das ist der bei der IANA registrierte Name. charset=ascii ist es nicht, und im Browser bekommen Sie mit charset=ISO-8859-1 tatsächlich Windows-1252, weil der WHATWG Encoding Standard das Label so zuordnet.
Raten Sie nie eine Basis für andere
Wenn Ihr Tool oder Ihr Parser stillschweigend entscheidet, dass 41 hexadezimal ist, liegt es etwa in der Hälfte der Fälle falsch — und der Fehlschlag ist lautlos.
Iterieren Sie über Codepunkte, nicht über UTF-16-Einheiten
"A" + Notenschlüssel + chinesisches Zeichen hat .length === 4, aber nur drei Zeichen. Nutzen Sie [...str] oder codePointAt, sonst meldet Ihre Fehlermeldung „nicht unterstütztes Zeichen“ ein Emoji als zwei kaputte Hälften.

Häufig gestellte Fragen

Wie viele Zeichen hat ASCII?
128. ASCII ist ein 7-Bit-Code und definiert damit genau die Codepunkte 0 bis 127: 32 C0-Steuerzeichen, 95 grafische Zeichen einschließlich des Leerzeichens und DEL. Artikel mit dem Titel „vollständige ASCII-Tabelle (256 Zeichen)“ zeigen Ihnen irgendeine bestimmte 8-Bit-Codepage — meist CP437 oder Windows-1252 —, nicht ASCII.
Was ist erweitertes ASCII?
Streng genommen nichts. „Erweitertes ASCII“ ist der Name keines Standards; es ist ein loser Sammelbegriff für eine ganze Familie von 8-Bit-Kodierungen, die 0-127 gleich lassen und 128-255 unterschiedlich definieren. Das Byte 0xE9 ist in ISO-8859-1 ein é, in CP437 der griechische Buchstabe Theta und in CP866 ein kyrillischer Buchstabe. Ohne Angabe der Codepage hat die Frage keine Antwort.
Ist Windows-1252 dasselbe wie ISO-8859-1?
Von 0xA0 bis 0xFF sind die beiden identisch, von 0x80 bis 0x9F völlig verschieden. ISO-8859-1 überlässt diesen Bereich unsichtbaren C1-Steuerzeichen; Windows-1252 setzt dort 27 druckbare Zeichen hin — Eurozeichen, typografische Anführungszeichen, Halbgeviert- und Geviertstrich — und lässt 5 Positionen undefiniert. Deshalb wird aus einem typografischen Anführungszeichen, das aus einer Textverarbeitung kopiert wurde, ein unsichtbares Steuerzeichen, sobald es durch etwas läuft, das wirklich ISO-8859-1 ist.
Ist DEL ein Steuerzeichen?
Ja. Unicode ordnet U+007F der Kategorie Cc zu, und iscntrl(127) ist in C wahr. Es gehört nur nicht zum C0-Satz, der streng 0x00-0x1F umfasst. Am Ende der Tabelle steht es wegen des Lochstreifens: 0x7F sind sieben gestanzte Löcher, und ein einmal gestanztes Loch bekommt man nicht zurück — „alle Löcher gestanzt“ war also die einzige Möglichkeit, ein Zeichen als gelöscht zu markieren.
Ist das Leerzeichen ein Steuerzeichen?
Nein, und etliche ASCII-Tabellen machen hier einen Fehler. Unicode ordnet das Leerzeichen (0x20) der Kategorie Zs zu, einem Trennzeichen, und das ist ein grafisches Zeichen. Steuerzeichen sind ausschließlich 0x00-0x1F und 0x7F.
Warum zeigt die Binärspalte 8 Bit, wenn ASCII 7-bittig ist?
Weil das Byte die Einheit ist, in der tatsächlich gespeichert wird — das oberste Bit ist einfach immer 0. Diese Auffüllung ist nicht bloß Kosmetik: Genau weil ASCII das achte Bit nie benutzt, konnte UTF-8 es als Kennzeichen für „das gehört zu einer Mehrbyte-Sequenz“ beanspruchen, und genau das macht UTF-8 abwärtskompatibel zu ASCII.
Schreibt jede Sprache Steuerzeichen gleich?
Nein, und die Unterschiede beißen. \a (Bell) ist in C und Python Standard, aber JavaScript hat kein solches Escape — '\a' wird stillschweigend zum Buchstaben a, ohne Fehler, auch im Strict Mode. Java lehnt \a und \v beide ab. Go lehnt \0 ab, weil dort oktale Escapes genau drei Ziffern haben müssen, man schreibt also \000. Und \e für Escape ist eine GNU-Erweiterung, nicht ISO C.
Was bedeutet ^M in einem Diff oder in vim?
Es ist ein Wagenrücklauf, Byte 13. Die Caret-Notation schreibt ein Steuerzeichen, indem sie seinen Wert mit 0x40 XOR-verknüpft, aus CR (0x0D) wird also ^M und aus ESC (0x1B) wird ^[. Ein ^M am Ende jeder Zeile heißt, dass die Datei Windows-CRLF-Zeilenenden hat; ein bad interpreter: /bin/bash^M heißt, dass ein Shell-Skript sie aufgeschnappt hat.

Verwandte Werkzeuge

Alle Werkzeuge anzeigen →