American Standard Code for Information Interchange
ASCII ist ein Akronym für "American Standard Code for Information Interchange" (dt.: Amerikanischer Standard-Code für den Informationsaustausch), der als ANSI-Standard X3.4 im Jahr 1968 eingeführt wurde. Als Vater des ASCII-Standards gilt Bob Bemer.
Er beschreibt einen Zeichensatz, der auf dem lateinischen Alphabet basiert, wie er im modernen Englisch und von Computern und anderen Kommunikationseinrichtungen zur Textdarstellung verwendet wird. Er beschreibt als Code (wie auch EBCDIC von IBM) die Zuordnung von digital dargestellten Ganzzahlen zu den in der normalen Schriftsprache geschriebenen Zeichen. Mit Hilfe des Codes können digitale Geräte codierte Informationsinhalte senden, empfangen und verarbeiten.
Geschichte
Eine der frühsten Formen der Digitalisierung war der Morsecode. Der Morsecode wurde mit der Einführung von Fernschreibern aus den Telegrafennetzen verdrängt und durch Baudot-Code und Murray Code ersetzt. Vom Murray Code zum ASCII-Code war es dann nur noch ein kleiner Schritt. In den Anfängen des Computerzeitalters entwickelte sich der ASCII-Code zum Standard-Code für Schriftzeichen. Wie der Name schon sagt, diente der ASCII-Code ursprünglich zur Darstellung von Schriftzeichen der englischen Sprache. Um später auch Sonderzeichen anderer Sprachen darstellen zu können (z.B. deutsche Umlaute), wurde der Code erweitert. Allerdings bot der 8 Bit Code zu wenig Platz, um alle Sonderzeichen gleichzeitig unterzubringen, wodurch verschiedene Erweiterungen (siehe unten) notwendig wurden. Auch war es nicht möglich z.B. chinesische Schriftzeichen in einem 8 Bit Code unterzubringen. Das führte später zum Unicode, der nun alle Schriftzeichen der Menschheit enthält. Der Unicode hat den ASCII-Code heute abgelöst.
Schriftzeichen | Dezimal | Hexadezimal | Binärzeichen |
---|---|---|---|
A | 65 | x41 | (0)1000001 |
B | 66 | x42 | (0)1000010 |
C | 67 | x43 | (0)1000011 |
... | ... | ... | ... |
ASCII beschreibt einen Sieben-Bit-Code. Dieser Code verwendet binäre Ganzzahlen, die mit sieben binären Ziffern dargestellt werden (entspricht 0 bis 127), um Informationen darzustellen. Schon früh haben Computer mehr als 7 Bits, oft mindestens Acht-Bit-Zahlenworte, verwendet – das achte Bit kann für Fehlerkorrekturzwecke (Paritätsbit) auf den Kommunikationsleitungen oder für andere Steuerungsaufgaben verwendet werden.
Fortschritte in der Technik und die internationale Verbreitung erzeugten eine Reihe von Variationen und Erweiterungen des Codes, die nicht alle untereinander kompatibel sind und nicht für alle Systeme gleichermaßen verwendet werden können.
Zusammensetzung
Code | -0 | -1 | -2 | -3 | -4 | -5 | -6 | -7 | -8 | -9 | -A | -B | -C | -D | -E | -F |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0- | NUL | SOH | STX | ETX | EOT | ENQ | ACK | BEL | BS | HT | LF | VT | FF | CR | SO | SI |
1- | DLE | DC1 | DC2 | DC3 | DC4 | NAK | SYN | ETB | CAN | EM | SUB | ESC | FS | GS | RS | US |
2- | SP | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / |
3- | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
4- | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
5- | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ |
6- | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
7- | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | DEL |
Die ersten 32 Zeichencodes in ASCII sind für Steuerzeichen (control character) reserviert. Dies sind Zeichen, die keine Schriftzeichen darstellen, sondern die zur Steuerung von solchen Geräten dienen (oder dienten), die ASCII verwenden (etwa Drucker). Steuerzeichen sind beispielsweise der Wagenrücklauf für den Zeilenumbruch oder Bell (die Glocke); ihre Definition ist historisch begründet.
Code 0x20 (SP) ist das Leerzeichen (engl. space oder blank), welches in einem Text als Leer- und Trennzeichen zwischen Wörtern verwendet und auf der Tastatur durch die große breite Leertaste erzeugt wird. Die Codes 0x21 bis 0x7E sind alle druckbaren Zeichen, die sowohl Buchstaben, Ziffern und Satzzeichen (siehe Tabelle) enthalten. Code 0x7F (alle sieben Bits auf eins gesetzt) ist ein Sonderzeichen, welches auch als "Löschzeichen" bezeichnet wird (DEL). Der Code wurde früher wie ein Steuerzeichen verwendet, um auf Papierstreifen oder Lochmaschinen ein bereits gelochtes Zeichen nachträglich durch das Setzen aller Bits, d.h. durch Auslochen aller sieben Markierungen, löschen zu können.
Erweiterungen
ASCII enthält keine diakritischen Zeichen, die in vielen Sprachen auf der Basis des lateinischen Alphabets verwendet werden.
Der internationale Standard ISO 646 (1972) war der erste Versuch, dieses Problem anzugehen, was allerdings zu Kompatibilitätsproblemen führte. Er ist immer noch ein Sieben-Bit-Code und weil keine anderen Codes verfügbar waren wurden einige Codes in neuen Varianten verwendet.
So ist etwa der ASCII-Code 93 für die rechte eckige Klammer (]) in der deutschen Zeichensatz-Variante ISO 646-DE durch das große U mit Trema (Umlaut) (Ü) und in der dänischen Variante ISO 646-DK durch das große A mit Ring (Krouzek) (Å) ersetzt. Bei der Programmierung mussten die eckigen Klammern durch die entsprechenden nationalen Sonderzeichen ersetzt werden.
Verschiedene Hersteller entwickelten eigene Acht-Bit-Codes. Der Codepage 437 genannte Code ist der am weitesten verbreitete, er kam auf dem IBM PC zur Anwendung.
Auch bei späteren Standards wie ISO 8859 wurden acht Bits verwendet. Dabei existieren mehrere Varianten, zum Beispiel ISO 8859-1 für die westeuropäischen Sprachen. Viele ältere Programme, die das achte Bit für eigene Zwecke verwendeten, konnten damit nicht umgehen. Sie wurden im Laufe der Zeit oft den neuen Erfordernissen angepasst.
Unicode (in seinem Zeichenvorat identisch mit ISO 10646) verwendet bis zu 32 Bit pro Zeichen und könnte somit über vier Milliarden verschiedene Zeichen unterscheiden; dies wird jedoch auf etwa 1 Million erlaubte Code-Werte eingeschränkt. Damit können alle bislang von Menschen verwendeten Schriftzeichen dargestellt werden, sofern sie denn in den Unicode-Standard aufgenommen wurden. UTF-8 ist eine Kodierung von Unicode, die mit der 8-bit-Architektur kompatibel ist. Sieben-Bit-Varianten müssen nicht mehr verwendet werden – dennoch kann Unicode auch in 7 Bit kodiert werden: UTF-7.
ASCII enthält nur wenige Zeichen, die allgemein verbindlich zur Formatierung oder Strukturierung von Text verwendet werden. Hierzu zählen insbesondere der Zeilenvorschub (Linefeed), der Wagenrücklauf (Carriage Return), der horizontale Tabulator, Form Feed und der vertikale Tabulator. Die Verwendung weiterer Zeichen zur Textformatierung ist bei verschiedenen Anwendungprogrammen zur Textverarbeitung unterschiedlich. Zur Formatierung von Text werden auch Markup-Codes verwendet. In der Kryptographie werden Codes zusätzlich verschlüsselt, damit Informationen nur von berechtigten Empfängern entschlüsselt und genutzt werden können.
Kompatible Zeichenkodierungen
Viele Zeichenkodierungen sind so entworfen, dass sie für Bytes im Bereich 0…127 das gleiche Zeichen kodieren wie ASCII und die Bytes 128…255 für die Darstellung weiterer Zeichen benutzen.
Kodierungen mit fester Länge
Hier steht ein Byte immer für ein Zeichen
- ISO 8859 mit 15 verschiedenen Zeichenkodierungen zur Abdeckung aller europäischen Sprachen und Thai
- MacRoman, MacCyrillic und andere propietäre Zeichensätze für Apple Mac Computer vor Mac OS X.
- Windows- und DOS-Codepages, z.B. Windows-1252
- KOI8-R für Russisch und KOI8-U für Ukrainisch
- ARMSCII für Armenisch
- GEOSTD für Georgisch
- ISCII für alle indischen Sprachen
- TSCII für Tamil
- VISCII für Vietnamesisch
- EUC (Extended UNIX Coding) für ostasiatische Sprachen.
Kodierungen mit variabler Länge
Um eine höhere Anzahl von Zeichen kodieren zu können, stehen nur die Bytes 0…127 für ein Zeichen, die weiteren Zeichen werden durch mehrere Bytes aus dem Bereich 128…255 kodiert.