ASCII

American Standard Code for Information Interchange

Die 128 Zeichen des ASCII-Code bildet die Grundlage wichtiger IT-Bereiche, z.B. des Internet, der meisten Programmiersprachen und der Datenbank-Sprache SQL. Obwohl dieser Code für die Darstellung von Zeichen nur mehr wenig Bedeutung hat, wird er von jedem Computer beherrscht. Der ASCII-Code ist als Teilmenge in vielen anderen Codes enthalten.
Diese Webseite verwendet teilweise Unicode-Zeichen.
Beispiel: α β γ δ
Wenn sie keine Pfeile und griechischen Zeichen sehen, dann versteht ihr Browser (ältere Version) keinen Unicode.
Alle Zeichen dieser Seite lassen sich kopieren und in Standard-Programme einsetzen. Verwenden sie dafür nur Standard Schrift-Familien (die auch Unicode beherrschen).
Zeichencodes PC-Codes für Buchstaben, Ziffern und Sonderzeichen
ASCII-Code Code-Tabellen für ASCII und 'Latin-1'
DOS-Code Code-Tabellen für diesen Uralt-Code
Win-125* Der Alleingang von M$
Detail-Code Detaillierte Code-Tabelle für ASCII/DOS und ANSI
Bereich #80..9F Alleingang abseits von ISO-8859 und Unicode
Programmierung Umwandlung Code ↔ Zahl in Programmiersprachen
ASCII ↔ ANSI Umwandlung ASCII ↔ ANSI (ascii2ansi, ansi2ascii)
Verwandte Themen Unicode, UTF, ISO-8859, Latin-1, EBCDIC, ...

Zeichen- Tabellen ASCII und 'Latin-1'

Der 7-Bit ASCII-Code (American Standard Code for Information Interchange) stellt die Zeichen-Grundlage der meisten Informatik-Gebiete dar (z.B. Programmiersprachen).
Er wurde im US-Standard ANSI X3.4-1986 definiert.
Der ASCII-Code ist identisch mit dem → Unicode-Zeichensatz U0000.
Die 128 Zeichen dieses Code sind als fixer Bestandteil in den meisten anderen Zeichen-Codes enthalten.
Der ASCII-Code umfasst nur die Zeichen 0..127 (#00..7F). Alle darüber hinausgehenden Codes sind nicht Teil des ASCII-Standards.
Der Code-Bereich 128..255 (#80..FF) gehört nicht mehr zum ASCII-Bereich. Die kleinste Speicher-Zelle eines PC umfasst normalerweise 1 Byte = 8 Bit und kann 256 Zeichen darstellen, also 0..255 (#00..FF), d.h. noch 128 Zeichen zusätzlich zum ASCII-Standard.
Die wichtigste Variante für die Codierung dieser 128 zusätzlichen Zeichen ist → Unicode-Gruppe U0080.
Zusammen mit der Gruppe U0000 für die ersten 128 Zeichen ergibt das den Standard → ISO-8859-1. MS-Betriebssysteme verwenden je nach Region abweichende Varianten, z.B. (' → CP-1252', 'ANSI').
Hinweise zu den Code-Tabellen:
Beim Überfahren eines Zeichens mit der Maus wird sein Code hexadezimal (als Unicode) und dezimal (mit Punkt) angezeigt.
Nicht druckbare Steuerzeichen sind hellgelb unterlegt, z.B.:
HT...(horizontaler) Tabulator (U+0009)
LF...Line Feed (U+000A)
CR...Carriage Return (U+000D)
DEL..Delete (U+007F)
Die deutschen Umlaute und ß sind grün hervorgehoben.
Hinweis für EntwicklerInnen:
Beide Tabellen sind als → 'InnenRahmen' <iframe> in diese Webseite eingebettet. Beide Rahmen enthalten die gleiche Mini-Webseite.
Der Inhalt der Zeichen-Tabelle wird Live mit → Javascript erzeugt.
Durch → Übergabe von Argumenten an Javascript wird entschieden, welche Tabelle angezeigt wird.

→ Cygwin enthält das Konsolen-Programm ascii.exe, mit dem man Live ASCII-Code und → ISO-88549-1 (Latin-1) anzeigen kann.

Tastatur:

Wenn man den ASCII- bzw. ANSI-Code eines Zeichens kennt, dann lässt sich der dezimale Code auch direkt auf der Tastatur eingeben:
Dazu muss der Ziffernblock auf "numerisch" eingestellt sein (NUM-Lock, meist mit Kontroll-Anzeige).
ALT-Taste gedrückt halten
Dezimalcode mit führender Null auf dem Ziffernblock (!) eingeben, danach
ALT-Taste loslassen.
Das Zeichen wird in das aktuelle Dokument eingesetzt.

Das funktioniert in Windows-Systemen mit jedem Dokument.
Zum Auffinden der Codezahl verwenden sie z.B. diese Webseite oder das Programm charmap.exe

Beachten sie die führende Null, ansonsten werden die Zeichen des uralten → DOS-Codes eingesetzt.

Beispiel: Mit ALT+0223 erhalten sie das ß

Kontrollzeichen

Zur Eingabe der nicht druckbaren Kontrollzeichen an der Tastatur verwendet man die Taste Ctrl gemeinsam mit einer weiteren Taste, deren Code dadurch um hexadezimal 0x40 vermindert wird.

Beispiel: Um das Zeichen BEL (U+0007) der ersten Zeile der ASCII-Tabelle einzugeben, geht man in der gleichen Spalte 4 Zeilen weiter und gelangt zum Zeichen G (U+0047), d.h. bei Eingabe von Ctrl-G erzeugt die Tastatur das Zeichen BEL (=Glocke, auf heutigen PC den System-Beep).

Ein Sonderfall ist das Zeichen DEL (U+007F). Man erhält es durch Eingabe von Ctrl-? - in diesem Fall ergibt die Subtraktion von 0x40 eine negative Zahl, die auf 7 Bit abgeschnitten wird und damit 0x7F ergibt.

Manchmal wird die Ctrl-Taste mit dem Zeichen ^ symbolisiert, z.B. ist ^C als Ctrl-C zu interpretieren. Diese Darstellung ist missverständlich, weil man die beiden Zeichen ^ und C auch hintereinander eingeben kann.

DOS-Code Tabellen

Alle Angaben natürlich ohne Gewähr ! - Beachten sie die Hinweise zu den Tabellen !
Es gibt nicht 'den' DOS-Zeichencode, sondern zahlreiche Varianten. Daher ist Vorsicht geboten, alle Angaben erfolgen ohne Gewähr. Die Zeichen sind teilweise sogar von der verwendeten Schrift-Familie abhängig. Diese Tabelle orientiert sich am Code CP-852 (ohne Gewähr).

Nur wenige Sonderzeichen dieses Codes haben noch Bedeutung für → Konsolen-Programme: Die deutschen Umlaute und ß sind grün unterlegt.

Einige Zeichen (z.B. Pseudografik) kann ihr Browser nur amzeigen, wenn er → Unicode beherrscht.
'Pseudografik'-Zeichen wiewurden in Uralt-Software gerne zur Gestaltung von Formularen eingesetzt.

Der Code-Bereich 0..127 (#00..FF) ist zwar prinzipiell identisch mit Standard-ASCII (s.o.), unter bestimmten Bedingungen (siehe rechts) werden jedoch an Stelle der Steuerzeichen 0..31 (#00..1F) die hier gezeigten Zeichen ausgegeben.

Im Gegensatz zu anderen Zeichen-Tabellen sind hier keine Zeichen-Bilder enthalten, sondern echte (→ Unicode)-Zeichen. Sie können jedes einzelne Zeichen kopieren und in anderen Programmen weiter verwenden.

Tastatur-Eingabe:

Auf M$-Betriebssystemen können sie 'DOS'-Zeichen mit ihrem dezimalen Code 0..255 über die Tastatur eingeben. Der Ziffernblock muss auf "numerisch" eingestellt sein.
ALT-Taste gedrückt halten
Code auf dem Ziffernblock (!) eingeben, danach
ALT-Taste loslassen.

Beim Loslassen der ALT-Taste wird das Zeichen in das gerade verwendete Dokument eingesetzt.

Beispiel:
Mit ALT+3 erhalten sie das.
Mit ALT+225 erhalten sie das ß.
Achtung - Wenn sie den Code mit führender Null (!) eingeben, erhalten sie das ↑ ANSI-Zeichen (s.o.)
Mit ALT+0225 erhalten sie das á.

Detaillierte Code-Tabelle

 
DecOctHexesc HTMLANSIASCIIName (ANSI)
 
Die ersten 3 Spalten geben die Code-Zahl in verschiedenen Zahlensystemen an: Dezimal, Octal und Hexadezimal.
Spalte esc gibt an, wie bestimmte Zeichen zu → maskieren sind, z.B. für die Programmiersprachen C++, Javascript, Perl, PHP.
Spalte HTML gibt an, wie das Zeichen in → HTML-Code angegeben wird.
Spalte ANSI gibt den Windows-Code an, Spalte ASCII den ASCII-Code für Zeichen 0..127, den DOS-Code für Zeichen 128..255.
Spalte Name enthält die Standard- und sonstigen Namen für das jeweilige ANSI-Zeichen. Nicht druckbare Kontrollzeichen sind rot hervorheboben.

Der Code-Bereich #80..#9F

Die Standard-Zeichensätze → ISO-8859 und → Unicode führen im Bereich #80..9F (128..159) nicht druckbare Kontrollzeichen. Betriebssysteme und Programme des IT-Marktführers verwenden leider eine davon abweichende Version ('ANSI', Details unter → CP-1252), welche die meisten dieser Codes für druckbare Zeichen verwendet. Alle diese Zeichen sind in den Standard-Zeichensätzen an anderen Stellen codiert.

M$-Software neigt stark zur Verwendung von 'ANSI'-Zeichen - Leider auch dann, wenn ausdrücklich ISO- 8859 oder Unicode vereinbart wurde. Das ist die Ursache vieler schwierig zu findender Fehler und teurer Sonder-Maßnahmen in Software. Verwenden sie - wenn möglich - immer eindeutigen Unicode !

Die folgende Verweis-Liste (lookup table) zeigt, welche Zeichen von → CP-1250 im Bereich #80..9F verwendet werden (ohne Gewähr):
Sämtliche 'ANSI'-Zeichen dieses Bereichs werden von M$-Programmen korrekt verwendet, wenn sie mit ihrem Standard-Unicode codiert werden.
Wenn möglich sollten sie daher diese Zeichen immer mit dem Standard Unicode codieren, nicht mit 'ANSI' - das funktioniert überall und vermeidet Probleme.

Das wichtigste Beispiel: Codieren sie das -Zeichen mit → Unicode chr(0x20AC) oder chr(8364) oder &euro; jedoch niemals mit → CP-1250-Code chr(0x80) oder chr(128).

ASCII und ANSI in Programmiersprachen (→ Details)

Jede Programmiersprache bietet Möglichkeiten zur Verarbeitung von einzelnen Zeichen und 'Strings' aus mehreren Zeichen, insbesondere auch zur Umwandlung Zeichen ↔ CodeZahl.

Die relativ umfangreichen Details wurden auf die Webseite → Zeichen-Programmierung übersiedelt.
Tipp: Der Variablen-Typ 'Integer' eignet sich nicht für Unicode, da sein Wertebereich meist bei 32767. endet (je nach System). Verwenden sie besser andere Typen wie z.B. 'Long'.
Tipp: Verwenden sie für neue Entwicklungen nur → Unicode-kompatible-Funktionen !
Tipps & Tricks:
Kleinbuchstaben liegen im ASCII & ANSI-Code um den Betrag 32. (#20) höher als die entsprechenden Großbuchstaben. Wenn ein Zeichen sicher (!) ein Buchstabe ist, dann kann man es durch Addition bzw. Subtraktion der Zahl 32 klein/groß umwandeln.
Das gilt auch für die deutschen Umlaute äöü sowie für die meisten anderen Sonderzeichen, die aus lateinischen Buchstaben abgeleitet sind.
Die Zeichen $ _ zählen in manchen IT-Bereichen ebenfalls zu den Buchstaben.

Leider folgen die Zeichen 9 und A nicht unmittelbar aufeinander. Daher muss man bei der Umwandlung von / nach Hexadezimal-Code die dazwischen liegenden 7 Zeichen überspringen.
Verwenden sie bei eigenen Entwicklungen sicherheitshalber keines der ANSI-Zeichen #80..#9F, sondern an deren Stelle die entsprechenden → Unicode-Zeichen. ANSI ist in diesem Bereich nicht konform mit Unicode und dem Standard → ISO-8859-1.

Details zur Programmierung von Zeichen und Strings (Zeichenketten)

Umwandlung ASCII ↔ ANSI

Werkzeuge ascii2ansi und ansi2ascii
Mit Programmen der Programmiersprache C++ lassen sich beliebige Zeichencode-Umwandlungen besonders rasch ausführen.
Das Beispiel rechts demonstriert (vereinfacht) die Umwandlung ASCII → ANSI.
In C++ gibt es keinen Unterschied zwischen Zeichen und 1-Byte-Zahlen. Es kommt auf das Ausgabe-Format an (%c,%d), wie ein Zeichen angezeigt wird.

Die Umwandlung erfolgt mit Hilfe einer ('Lookup')-Tabelle t. Diese Methode wird angewendet, wenn die Umwandlung keinem Algorithmus folgt. Da die beiden Codes im Bereich 0..126 übereinstimmen, werden nur Zeichen >126 umgewandelt.
Einige ASCII-Zeichen haben in ANSI keine Entsprechung (und umgekehrt), sie werden hier mit Code 63 (Zeichen ? ) übersetzt.
Mit etwas Geschick können sie aus der Lookup-Tabelle t die 'inverse' Tabelle für ansi2ascii erzeugen.
Alle Angaben ohne Gewähr, Verwendung auf eigenes Risiko !

Anwendung (Windows:):
C:\> ascii2ansi umwandeln.txt
oder
C:\> ascii2ansi in.txt out.txt

Download der beiden Win-Programme ascii2ansi.exe und ansi2ascii.exe als komprimiertes Archiv (zip).

Cygwin enthält das Konsolen-Programm ascii.exe zur Anzeige von ASCII-Code bzw. → ISO-88549-1 (Latin-1) Code auf einer Text-Konsole.
// ascii2ansi
#include <stdio.h>
int main(int argc, char* argv[]) {
int i,ic;
char inpath[]="in.txt";
char outpath[]="out.txt";
char line[1024];
FILE *instream,*outstream;
int t[]={63,199,252,233,226,228,224,229,231,
234,235,232,239,238,236,196,197,201,230,198,
244,246,242,251,249,255,214,220,248,163,216,
215,131,225,237,243,250,241,209,170,186,191,
174,172,189,188,161,171,187,63,63,63,63,63,
193,194,192,169,63,63,63,63,162,165,63,63,
63,63,63,63,63,227,195,63,63,63,63,63,63,63,
164,240,208,202,203,200,63,205,206,207,63,
63,63,63,166,204,63,211,223,212,210,245,213,
181,254,222,218,219,217,253,221,175,180,173,
177,63,190,182,167,247,184,176,168,183,185,
179,178,63,160};
instream = fopen(inpath,"rt");
outstream = fopen(outpath,"wt");
while (fgets(line,1000,instream) != NULL) {
for(i=0;i<int(strlen(line));i++) {
ic=int(line[i]);
if(ic<0) {ic+=256;}
if(ic>126) {
ic=t[ic-127];
line[i]=ic;
}
}
fputs(line,outstream);
}
fclose(instream);
fclose(outstream);
return 0;
}

XHTML CSS