| 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)
●
Die deutschen Umlaute und ß sind grün
hervorgehoben.
LF...Line Feed (U+000A) CR...Carriage Return (U+000D) DEL..Delete (U+007F) |
●
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. |
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
Das Zeichen wird in das aktuelle Dokument eingesetzt.
Dezimalcode mit führender Null auf dem Ziffernblock (!) eingeben, danach ALT-Taste loslassen. |
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 ß |
KontrollzeichenZur 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 TabellenAlle 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 wie ╩ wurden 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 |
||||||||||||
|
||||||||||||
|
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
|
|
|
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 € 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
|
// 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; |
|
|