ASCII ist eine Weiterleitung auf diesen Artikel. Weitere Bedeutungen sind unterASCII (Begriffsklärung) aufgeführt.
ASCII-Tabelle aus MIL-STD-188-100 (1972)
DerAmerican Standard Code for Information Interchange (ASCII, alternativUS-ASCII, ausgesprochen [ˈæski],[1]deutsch„Amerikanischer Standard-Code für den Informationsaustausch“) ist eine 7-Bit-Zeichenkodierung; sie entspricht der US-Variante vonISO 646 und dient als Grundlage für spätere, auf mehr Bits basierende Kodierungen fürZeichensätze.Der ASCII-Code wurde zuerst am 17. Juni 1963 von derAmerican Standards Association (ASA) als Standard ASA X3.4-1963 gebilligt[2][3] (damals noch ohne Kleinbuchstaben[4]) und 1967/68[5] wesentlich sowie zuletzt im Jahr 1986 (ANSI X3.4-1986)[6] von ihren Nachfolgeinstitutionen aktualisiert und wird noch benutzt. Die Zeichenkodierung definiert 128 Zeichen und besteht aus 33 nicht druckbaren sowie 95 darauf folgenden druckbaren Zeichen, beginnend mit demLeerzeichen:
Die nicht druckbarenSteuerzeichen enthalten Ausgabezeichen wie Zeilenvorschub oderTabulatorzeichen,Protokollzeichen wie Übertragungsende oder Bestätigung und Trennzeichen wie Datensatztrennzeichen.
Jedem Zeichen wird ein Bitmuster aus 7 Bit zugeordnet. Da jedes Bit zwei Werte annehmen kann, gibt es 27 = 128 verschiedene Bitmuster, die auch als die ganzen Zahlen 0–127 (hexadezimal 00hex–7Fhex) interpretiert werden können.
Das für ASCII nicht benutzte achte Bit kann für dieFehlererkennung (Paritätsbit) auf den Kommunikationsleitungen oder für andere Steuerungsaufgaben verwendet werden. Es wird aber fast immer zur Erweiterung von ASCII auf einen 8-Bit-Code verwendet. Diese Erweiterungen sind mit dem ursprünglichen ASCII weitgehendkompatibel, so dass alle im ASCII definierten Zeichen auch in den verschiedenen Erweiterungen durch die gleichen Bitmuster kodiert werden. Die einfachsten Erweiterungen sind Kodierungen mit sprachspezifischen Zeichen, die nicht im lateinischen Grundalphabet enthalten sind, vgl.unten.
Die ersten 32 ASCII-Zeichencodes (von 00hex bis 1Fhex) sind fürSteuerzeichen(control character) reserviert; siehe dort für die Erklärung der Abkürzungen in der rechts (oder oben) stehenden Tabelle. Diese Zeichen stellen keine Schriftzeichen dar, sondern dienen (oder dienten) zur Steuerung von solchen Geräten, die den ASCII verwenden (etwa Drucker). Steuerzeichen sind beispielsweise derWagenrücklauf für denZeilenumbruch oderBell (die Glocke); ihre Definition ist historisch begründet.
Code 20hex(SP) ist dasLeerzeichen (englischspace oderblank), das in einem Text als Leer- und Trennzeichen zwischen Wörtern verwendet und auf der Tastatur durch dieLeertaste erzeugt wird.
Die Codes 21hex bis 7Ehex stehen für druckbare Zeichen, die Buchstaben, Ziffern undInterpunktionszeichen (Satzzeichen,Wortzeichen) umfassen. Die Buchstaben sind lediglich Klein- und Großbuchstaben deslateinischen Alphabets. In nicht-englischen Sprachen verwendete Buchstabenvarianten – beispielsweise die deutschenUmlaute – sind im ASCII-Zeichensatz nicht enthalten. Ebenso fehlen typografisch korrekteGedankenstriche und Anführungszeichen, die Typografie beschränkt sich auf denSchreibmaschinensatz. Der Zweck warInformationsaustausch, nichtDrucksatz.
Code 7Fhex (alle sieben Bits auf eins gesetzt) ist ein Sonderzeichen, das auch alsLöschzeichen bezeichnet wird(DEL). Dieser Code wurde früher wie ein Steuerzeichen verwendet, um aufLochstreifen oderLochkarten ein bereits gelochtes Zeichen nachträglich durch das Setzen aller Bits, das heißt durch Auslochen aller sieben Markierungen, löschen zu können. Dies war die einzige Möglichkeit zum Löschen, da einmal vorhandene Löcher nicht mehr rückgängig gemacht werden können.Bereiche ohne Löcher (also mit dem Code 00hex) fanden sich vor allem am Anfang und Ende eines Lochstreifens(NUL).
Aus diesem Grund gehörten zum eigentlichen ASCII nur 126 Zeichen, denn den Bitmustern 0 (0000000) und 127 (1111111) entsprachen keine Zeichencodes. Der Code 0 wurde später in der ProgrammierspracheC als „Ende der Zeichenkette“ interpretiert; dem Zeichen 127 wurden verschiedene grafische Symbole zugeordnet.
Eine frühe Form der Zeichenkodierung war derMorsecode. Er wurde mit der Einführung vonFernschreibern aus den Telegrafennetzen verdrängt und durch denBaudot-Code undMurray-Code ersetzt. Vom 5-Bit-Murray-Code zum 7-Bit-ASCII war es dann nur noch ein kleiner Schritt – auch ASCII wurde zuerst für bestimmte amerikanische Fernschreibermodelle, wie den TeletypeASR33, eingesetzt.
Die erste Version, noch ohneKleinbuchstaben und mit kleinen Abweichungen vom heutigen ASCII bei den Steuer- und Sonderzeichen, entstand im Jahr 1963.
Im Jahr 1965 folgt die zweite Form des ASCII-Standards. Obwohl die Norm genehmigt wurde, wurde sie nie veröffentlicht und fand daher auch nie Anwendung. Der Grund dafür war, dass der ASA gemeldet wurde, dass die ISO (die International Standards Organization) einen Zeichensatz standardisieren würde, der ähnlich wie diese Norm war, aber leicht im Widerspruch zu dieser stünde.[7]
1968 wurde dann die gültige Fassung des ASCII-Standards festgelegt.[7]
In den Anfängen des Computerzeitalters entwickelte sich ASCII zum Standard-Code für Schriftzeichen. Zum Beispiel wurden vieleTerminals (VT100) undDrucker nur mit ASCII angesteuert.
Für die Kodierung lateinischer Zeichen wird fast nur beiGroßrechnern die zu ASCII inkompatible 8-Bit-KodierungEBCDIC verwendet, dieIBM parallel zu ASCII für seinSystem/360 entwickelte, damals ein ernsthafter Konkurrent. Die Handhabung des Alphabets ist in EBCDIC schwieriger, denn es ist dort auf drei auseinander liegende Codebereiche verteilt. IBM selbst verwendete ASCII für interne Dokumente. ASCII wurde durch PräsidentLyndon B. Johnsons Anordnung 1968 gestützt, es in den Regierungsbüros zu verwenden.
Mit dem Internationalen Alphabet 5 (IA5) wurde 1963 eine 7-Bit-Codierung auf Basis des ASCII als ISO 646 normiert. Die Referenzversion (ISO 646-IRV) entspricht dabei bis auf eine Position dem ASCII. Um Buchstaben und Sonderzeichen verschiedener Sprachen darstellen zu können (beispielsweise die deutschen Umlaute), wurden 12 Zeichenpositionen zur Umdefinition vorgesehen (#$@[\]^`{|}~). Eine gleichzeitige Darstellung ist nicht möglich. Fehlende Anpassungen der Software an die jeweils zur Anzeige verwendete Variante führte oft zu ungewollt komischen Ergebnissen, so erschien beim Einschalten desApple II „APPLE ÜÄ“ anstelle von „APPLE ][“.
Da sich darunter Zeichen befinden, die in der Programmierung verwendet werden, insbesondere die verschiedenen Klammern, wurden Programmiersprachen über Ersatzkombinationen (Digraphen) für die Internationalisierung ertüchtigt. Zur Kodierung wurden dazu ausschließlich Zeichen aus dem invarianten Teil von ISO 646 verwendet. Die Kombinationen sind sprachspezifisch. So entspricht beiPascal(* und*) den geschweiften Klammern ({}), währendC<% und%> dafür vorsieht.
Zur Überwindung der Inkompatibilitäten nationaler 7-Bit-Varianten von ASCII entwickelten zunächst verschiedene Hersteller eigene ASCII-kompatible 8-Bit-Codes (d. h. solche, die auf den ersten 128 Positionen mit ASCII übereinstimmen). DerCodepage 437 genannte Code war lange Zeit der am weitesten verbreitete, er kam auf demIBM-PC unter englischemMS-DOS, und kommt noch im DOS-Fenster von englischemWindows zur Anwendung. In deren deutschen Installationen ist seit MS-DOS 3.3 die westeuropäischeCodepage 850 der Standard.
Auch bei späteren Standards wieISO 8859 wurden acht Bits verwendet. Dabei existieren mehrere Varianten, zum BeispielISO 8859-1 für die westeuropäischen Sprachen, die in Deutschland alsDIN 66303 übernommen wurde. Deutschsprachige Versionen vonWindows (außer DOS-Fenster) verwenden die auf ISO 8859-1 aufbauende KodierungWindows-1252 – daher sehen zum Beispiel die deutschen Umlaute falsch aus, wenn Textdateien unter DOS erstellt wurden und unter Windows betrachtet werden.
Viele ältere Programme, die das achte Bit für eigene Zwecke verwendeten, konnten damit nicht umgehen. Sie wurden im Lauf der Zeit oft den neuen Erfordernissen angepasst.
Auch 8-Bit-Codes, in denen ein Byte für ein Zeichen stand, boten zu wenig Platz, um alle Zeichen der menschlichenSchriftkultur gleichzeitig unterzubringen. Dadurch wurden mehrere verschiedene spezialisierte Erweiterungen notwendig. Daneben existieren vor allem für den ostasiatischen Raum einige ASCII-kompatible Kodierungen, die entweder zwischen verschiedenen Codetabellen umschalten oder mehr als ein Byte für jedes Nicht-ASCII-Zeichen benötigen.[8] Keine dieser 8-Bit-Erweiterungen ist aber „ASCII“, denn das bezeichnet nur den einheitlichen 7-Bit-Code.
Um den Anforderungen der verschiedenen Sprachen gerecht zu werden, wurde derUnicode (in seinem Zeichenvorrat identisch mitISO 10646) entwickelt. Er verwendet bis zu 32 Bit pro Zeichen und könnte somit über vier Milliarden verschiedene Zeichen unterscheiden, wird jedoch auf etwa eine Million erlaubteCodepoints eingeschränkt. Damit können alle bislang von Menschen verwendeten Schriftzeichen dargestellt werden, sofern sie in den Unicode-Standard aufgenommen wurden.UTF-8 ist eine 8-Bit-Kodierung von Unicode, die zu ASCII abwärtskompatibel ist. Ein Zeichen kann dabei ein bis vier 8-Bit-Wörter einnehmen. Sieben-Bit-Varianten müssen nicht mehr verwendet werden, dennoch kann Unicode auch mit Hilfe vonUTF-7 in sieben Bit kodiert werden. UTF-8 entwickelte sich zum Standard unter vielen Betriebssystemen. So nutzen unter anderem ApplesmacOS sowie einigeLinux-Distributionen standardmäßig UTF-8, und mehr als 90 %[9] der Websites werden in UTF-8 erstellt.
Formatierungszeichen gegenüber Auszeichnungssprachen
ASCII enthält nur wenige Zeichen, die allgemeinverbindlich zur Formatierung oder Strukturierung von Text verwendet werden; diese gingen aus den Steuerbefehlen derFernschreiber hervor. Dazu zählen insbesondere der Zeilenvorschub (Linefeed), der Wagenrücklauf (Carriage Return), das Horizontal-Tabulatorzeichen, der Seitenvorschub (Form Feed) und das Vertikal-Tabulatorzeichen. In typischen ASCII-Textdateien findet sich neben den druckbaren Zeichen meist nur noch der Wagenrücklauf oder der Zeilenvorschub, um das Zeilenende zu markieren; dabei werden in DOS- und Windows-Systemen üblicherweise beide nacheinander verwendet, bei älterenApple- undCommodore-Rechnern (ohneAmiga) nur der Wagenrücklauf und aufUnix-artigen sowie Amiga-Systemen nur der Zeilenvorschub. Die Verwendung weiterer Zeichen zur Textformatierung wird unterschiedlich gehandhabt. Zur Formatierung von Text werden inzwischen eherMarkup-Sprachen wie zum BeispielHTML verwendet.
Die meistenZeichenkodierungen sind so entworfen, dass sie für Zeichen zwischen 0 … 127 den gleichen Code verwenden wie ASCII und den Bereich über 127 für weitere Zeichen benutzen.
Hier steht eine feste Anzahl Bytes für jeweils ein Zeichen. In den meisten Kodierungen ist das ein Byte pro Zeichen –Single Byte Character Set oder kurz SBCS genannt. Bei den ostasiatischen Schriften sind es zwei oder mehr Byte pro Zeichen, wodurch diese Kodierungen nicht mehr ASCII-kompatibel sind. Die kompatiblen SBCS-Zeichensätze entsprechen den oben besprochenen ASCII-Erweiterungen:
ISO 8859 mit 15 verschiedenen Zeichenkodierungen zur Abdeckung aller europäischen Sprachen,Türkisch,Arabisch,Hebräisch sowieThai (siehe Tabelle rechts)
MacRoman,MacCyrillic und andere proprietäre Zeichensätze für Apple Mac Computer vor Mac OS X
Um mehr Zeichen kodieren zu können, werden die Zeichen 0 bis 127 in einem Byte kodiert, andere Zeichen werden durch mehrere Bytes mit Werten von über 127 kodiert:
American Standards Association:American Standard Code for Information Interchange. ASA X3.4-1963. American Standards Association, New York 1963 (PDF 11 Seiten (Memento vom 26. Mai 2016 imInternet Archive))
American Standards Association:American Standard Code for Information Interchange. ASA X3.4-1965. American Standards Association, New York 1965 (genehmigt, aber nicht veröffentlicht)
United States of America Standards Institute:USA Standard Code for Information Interchange. USAS X3.4-1967. United States of America Standards Institute, 1967.
United States of America Standards Institute:USA Standard Code for Information Interchange. USAS X3.4-1968. United States of America Standards Institute, 1968.
American National Standards Institute:American National Standard for Information Systems. ANSI X3.4-1977. 1977.
American National Standards Institute:American National Standard for Information Systems. Coded Character Sets. 7-Bit American National Standard Code for Information Interchange (7-Bit ASCII). ANSI X3.4-1986. 1986.
Jacques André:Caractères numériques: introduction (= Cahiers Gutenberg.Band26). Mai 1997,ISSN1257-2217,S.5–44 (französisch).
Yannis Haralambous:Fonts & encodings. From Unicode to advanced typography and everything in between.O’Reilly, Beijing u. a. 2007,ISBN 978-0-596-10242-5 (englisch).
Peter Karow:Digitale Schriften. Darstellung und Formate. 2. verbesserte Auflage.Springer Nature, Berlin u. a. 1992,ISBN 3-540-54917-X.
↑American National Standards Institute (Hrsg.):American National Standard for Information Systems – Coded Character Sets – 7-Bit American Standard Code for Information Interchange (7-Bit ASCII) ANSI X3.4-1986. 1986 (unicode.org [PDF;1,7MB] ANSI INCITS 4-1986 [R2002]).