American Standard Code for Information Interchange
ASCII (übliche Aussprache: Äskie oder Askie) ist ein standardisierter Zeichensatz für Computer und andere Kommunikationseinrichtungen zur Textdarstellung. Er basiert auf dem lateinischen Alphabet, wie es im modernen Englisch benutzt wird.
püpü
ASCII beschreibt als Code die Zuordnung von digital dargestellten Ganzzahlen zu den in der normalen Schriftsprache geschriebenen Zeichen. Mit Hilfe des Codes können digitale Geräte Textinhalte als Zahlenfolgen senden, empfangen und verarbeiten. Da diese Geräte intern nur Zahlen verarbeiten, ist ein solcher Code zur Nutzung von Textinhalten unbedingt erforderlich.
Als Akronym steht ASCII für "American Standard Code for Information Interchange" (dt.: Amerikanischer Standard-Code für den Informationsaustausch). ASCII wurde als ANSI-Standard X3.4 im Jahr 1968 eingeführt. Als Vater des ASCII-Standards gilt Bob Bemer.
Ein einst wichtiger alternativer Code zu ASCII war EBCDIC von IBM; dieser Code hat jedoch heute nur noch relativ geringe Bedeutung.
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 Fünf-Bit-Murray-Code zum Sieben-Bit-ASCII war es dann nur noch ein kleiner Schritt - auch ASCII wurde zuerst für bestimmte amerikanische Fernschreiber-Modelle, wie den Teletype ASR33, eigesetzt. In den Anfängen des Computerzeitalters entwickelte sich ASCII zum Standard-Code für Schriftzeichen. Als Beispiel wurden viele Bildschirme (z.B. VT100) und Drucker nur mit ASCII angesteuert.
Wie der Name schon sagt, diente ASCII ursprünglich zur Darstellung von Schriftzeichen der englischen Sprache. Die erste Version, noch ohne Kleinbuchstaben und mit kleinen Abweichungen vom heutigen ASCII, entstand im Jahr 1963. Im Jahr 1968 wurde dann der bis heute gültige ASCII-Code festgelegt. Um später auch Sonderzeichen anderer Sprachen darstellen zu können (z.B. deutsche Umlaute), wurde der Code von sieben auf acht Bit erweitert. Allerdings bot auch der Acht-Bit-Code zu wenig Platz, um alle Sonderzeichen gleichzeitig unterzubringen, wodurch mehrere verschiedene Erweiterungen (siehe unten) notwendig wurden. Keine dieser Acht-Bit-Erweiterungen sollte aber als ASCII bezeichnet werden, um Verwirrung zu vermeiden – ASCII bezeichnet nur den einheitlichen Sieben-Bit-Code. Auch war es nicht möglich z.B. die tausenden chinesischen Schriftzeichen mit einem Acht-Bit Code darzustellen. Das führte später zu Unicode, einem Zeichensatz, der inzwischen einen Großteil aller Schriftzeichen der Menschheit enthält. Unicode hat ASCII heute in vielen Bereichen abgelöst.
Schriftzeichen | Dezimal | Hexadezimal | Binär |
---|---|---|---|
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; heute wird es aber fast immer zur Erweiterung von ASCII auf einen der diversen Acht-Bit-Codes verwendet.
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
Die ersten 32 ASCII-Zeichencodes sind für Steuerzeichen (control character) reserviert; siehe dort für die Erklärung der Abkürzungen in obiger Tabelle. 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). Dieser Code wurde früher wie ein Steuerzeichen verwendet, um auf Lochstreifen oder Lochkarten ein bereits gelochtes Zeichen nachträglich durch das Setzen aller Bits, d.h. durch Auslochen aller sieben Markierungen, löschen zu können - einmal vorhandene Löcher kann man schließlich nicht wieder zustopfen.
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 die ASCII-Position 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. Dies führte oft zu ungewollt komischen Ergebnissen, indem etwa die Einschaltmeldung des Apple II von "APPLE ][" zu "APPLE ÜÄ" mutierte.
Verschiedene Hersteller entwickelten eigene Acht-Bit-Codes. Der Codepage 437 genannte Code war lange Zeit der am weitesten verbreitete, er kam auf dem IBM-PC unter MS-DOS, und heute noch in DOS- oder Eingabeaufforderungs-Fenstern von MS-Windows, 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, welches in MS-Windows (außer DOS-Fenster) Standard ist -- daher sehen z.B. bei unter DOS erstellten Textdateien die deutschen Umlaute falsch aus, wenn man sie unter Windows ansieht. 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 Zeichenvorrat 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. Unter anderem nutzen einige Linux-Distributionen Unicode standardmäßig.
ASCII enthält nur wenige Zeichen, die allgemein verbindlich zur Formatierung oder Strukturierung von Text verwendet werden; diese gehen aus den Steuerbefehlen der Fernschreiber hervor. Hierzu zählen insbesondere der Zeilenvorschub (Linefeed), der Wagenrücklauf (Carriage Return), der horizontale Tabulator, der Seitenvorschub (Form Feed) und der vertikale Tabulator. In typischen ASCII-Textdateien findet sich neben den druckbaren Zeichen meist nur noch der Wagenrücklauf oder der Zeilenvorschub, um das Zeilenende zu markieren, wobei in DOS- und Windows-Systemen üblicherweise beide nacheinander verwendet werden, bei Apple- und Commodore-Rechnern nur der Wagenrücklauf, auf Unix-artigen Systemen nur der Zeilenvorschub. Die Verwendung weiterer Zeichen zur Textformatierung ist bei verschiedenen Anwendungprogrammen zur Textverarbeitung unterschiedlich. Zur Formatierung von Text werden heute auch verstärkt Markup-Codes wie z.B. XML 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 (Auswahl)
Hier steht eine feste Anzahl Bytes jeweils für ein Zeichen. In den meisten Schriften ist dies ein Byte je Zeichen, bei den ostasiatischen Schriften gewöhnlich zwei Byte je Zeichen.
- ISO 8859 mit 15 verschiedenen Zeichenkodierungen zur Abdeckung aller europäischen Sprachen und Thai
- MacRoman, MacCyrillic und andere proprietä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 mehrere ostasiatische Sprachen.
- Big 5 für traditionelles Chinesisch (Taiwan, Auslandschinesen)
- GB (Guojia Biaozhun)für vereinfachtes Chinesisch (VR China)
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.