American Standard Code for Information Interchange

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
ASCII ist eine Weiterleitung auf diesen Artikel. Weitere Bedeutungen sind unter ASCII (Begriffsklärung) aufgeführt.

Der American Standard Code for Information Interchange (ASCII, alternativ US-ASCII, oft [ˈæski] ausgesprochen, deutsch „Amerikanischer Standard-Code für Informationsaustausch“) ist eine 7-Bit-Zeichenkodierung; sie entspricht der US-Variante von ISO 646 und dient als Grundlage für spätere, auf mehr Bits basierende Kodierungen für Zeichensätze.

Der ASCII-Code wurde zuerst am 17. Juni 1963 von der American Standards Association (ASA) als Standard ASA X3.4-1963 gebilligt[1]:1[2]:50 und 1967/1968[3] wesentlich sowie zuletzt im Jahr 1986 (ANSI X3.4-1986)[4] von ihren Nachfolgeinstitutionen aktualisiert. Die Zeichenkodierung definiert 128 Zeichen, bestehend aus 33 nicht druckbaren sowie 95 druckbaren Zeichen. Letztere sind, beginnend mit dem Leerzeichen:

 !"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
`abcdefghijklmnopqrstuvwxyz{|}~  

Die druckbaren Zeichen umfassen das lateinische Alphabet in Groß- und Kleinschreibung, die zehn arabischen Ziffern sowie einige Interpunktionszeichen (Satzzeichen, Wortzeichen) und andere Sonderzeichen. Der Zeichenvorrat entspricht weitgehend dem einer Tastatur oder Schreibmaschine für die englische Sprache. In Computern und anderen elektronischen Geräten, die Text darstellen, wird dieser in der Regel gemäß ASCII oder abwärtskompatibel (ISO 8859, Unicode) dazu gespeichert.

Die nicht druckbaren Steuerzeichen enthalten Ausgabezeichen wie Zeilenvorschub oder Tabulator, Protokollzeichen wie Übertragungsende oder Bestätigung und Trennzeichen wie Datensatztrennzeichen.

Kodierung[Bearbeiten | Quelltext bearbeiten]

Die Buchstaben A, B und C als Sieben-Bit-Code
Schriftzeichen Dezimal Hexadezimal Binär
A 65 41 (0)1000001
B 66 42 (0)1000010
C 67 43 (0)1000011

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 00h–7Fh) interpretiert werden können.

Das für ASCII nicht benutzte 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 8-Bit-Code verwendet. Diese Erweiterungen sind mit dem ursprünglichen ASCII weitgehend kompatibel, 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.

Zusammensetzung[Bearbeiten | Quelltext bearbeiten]

ASCII-Zeichentabelle, hexadezimale Nummerierung
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 ASCII-Zeichencodes (von 0x00 bis 0x1F) sind für Steuerzeichen (control character) reserviert; siehe dort für die Erklärung der Abkürzungen in obiger Tabelle. Das sind Zeichen, die keine Schriftzeichen darstellen, sondern die zur Steuerung von solchen Geräten dienen (oder dienten), die den 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), das in einem Text als Leer- und Trennzeichen zwischen Wörtern verwendet und auf der Tastatur durch die Leertaste erzeugt wird.

Die Codes 0x21 bis 0x7E stehen für druckbare Zeichen, die Buchstaben, Ziffern und Interpunktionszeichen (Satzzeichen, Wortzeichen) umfassen. Die Buchstaben sind lediglich Klein- und Großbuchstaben des lateinischen Alphabets. In nicht-englischen Sprachen verwendete Buchstabenvarianten – beispielsweise die deutschen Umlaute– sind im ASCII-Zeichensatz nicht enthalten. Ebenso fehlen typografisch korrekte Gedankenstriche und Anführungszeichen, die Typografie beschränkt sich auf den Schreibmaschinensatz. Der Zweck war Informationsaustausch, nicht Drucksatz.

Code 0x7F (alle sieben Bits auf eins gesetzt) ist ein Sonderzeichen, das 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, das heißt durch Auslochen aller sieben Markierungen, löschen zu können – einmal vorhandene Löcher kann man schließlich nicht mehr rückgängig machen. Bereiche ohne Löcher (also mit dem Code 0x00) 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 Programmiersprache C als „Ende der Zeichenkette“ interpretiert; dem Zeichen 127 wurden verschiedene grafische Symbole zugeordnet.

Geschichte[Bearbeiten | Quelltext bearbeiten]

Fernschreiber

Eine frühe Form der Zeichenkodierung war der Morsecode. Er wurde mit der Einführung von Fernschreibern aus den Telegrafennetzen verdrängt und durch den Baudot-Code und Murray-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 Teletype ASR33, eingesetzt.

Die folgende Tabelle ist nicht hinreichend mit Belegen (beispielsweise Einzelnachweisen) ausgestattet. Die fraglichen Angaben werden daher möglicherweise demnächst entfernt. Bitte hilf der Wikipedia, indem du die Angaben recherchierst und gute Belege einfügst. Näheres ist eventuell auf der Diskussionsseite oder in der Versionsgeschichte angegeben. Bitte entferne zuletzt diese Warnmarkierung.
Was ist mit „ASCII 1965“ gemeint? ECMA-6 gemäß Jennings? Nein, muss eine frühere unveröffentlichte Fassung sein. (19:32, 11. Feb. 2016 (CET))
Dez Hex ASCII 1963 ASCII 1965 ASCII heute
0 .. 63 0x00 .. 0x3F → siehe normale Zusammensetzung
64 0x40 @ ` @
65 .. 91 0x41 .. 0x5B → siehe normale Zusammensetzung
92 0x5C \ ~ \
93 0x5D → siehe normale Zusammensetzung
94 0x5E ^
95 0x5F _
96 0x60 unbelegt @ `
97 .. 122 0x61 .. 0x7A unbelegt a – z
123 0x7B unbelegt {
124 0x7C unbelegt ¬ |
125 0x7D unbelegt }
126 0x7E ESC | ~
127 0x7F → siehe normale Zusammensetzung

Die erste Version, noch ohne Kleinbuchstaben und mit kleinen Abweichungen vom heutigen ASCII bei den Steuer- und Sonderzeichen, entstand im Jahr 1963.

Der folgende Satz bedarf einer Überarbeitung: Jennings: USAS X3.4-1967 – laut …[folgt] „approved“ 1968, aber X3.4-1968 gab es auch. Antwort vielleicht in Mackenzie 1980 S. 247 und so, vgl. en:ASCII#Organization. Evtl. genügt Vergleich mit Fred W. Smiths Tabelle von X3.4-1967. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung.

1968 wurde dann der bis heute gültige ASCII festgelegt. Diese Fassung gebar die Caesar-Verschlüsselung ROT47 als Erweiterung von ROT13. Während ROT13 nur das lateinische Alphabet um dessen halbe Länge rotiert, rotiert ROT47 alle ASCII-Zeichen zwischen 33 (!) und 126 (~).

Computer

In den Anfängen des Computerzeitalters entwickelte sich ASCII zum Standard-Code für Schriftzeichen. Zum Beispiel wurden viele Terminals (VT100) und Drucker nur mit ASCII angesteuert. Für die Kodierung lateinischer Zeichen wird fast nur noch im Großrechnerbereich die zu ASCII inkompatible 8-Bit-Kodierung EBCDIC verwendet, die IBM parallel zu ASCII für sein System/360 entwickelte, damals ein ernster Konkurrent. Die Handhabung des Alphabets in EBCDIC ist insofern schwieriger, als es dort auf zwei auseinander liegende Codebereiche verteilt ist. IBM selbst verwendete ASCII für interne Dokumente. ASCII wurde durch Präsident Lyndon B. Johnsons Anordnung 1968 gestützt, es in den Regierungsbüros zu verwenden.

Verwendung für andere Sprachen

ASCII diente ursprünglich der Darstellung von Schriftzeichen der englischen Sprache. Um später auch Sonderzeichen anderer Sprachen darstellen zu können (beispielsweise die deutschen Umlaute), ersetzte man wenig benutzte Zeichen (siehe DIN 66003, ISO 646).

MS-DOS-Codepages
437 Englisch
708 Arabisch (ASMO)
720 Arabisch (Microsoft)
737 Griechisch
775 Baltisch
850 Westeuropäisch
852 Mitteleuropäisch
855 Kyrillisch
857 Türkisch
858 Westeuropäisch mit Euro
860 Portugiesisch
861 Isländisch
862 Hebräisch
863 Kanadisches Französisch
864 Arabisch (IBM)
865 Nordisch
866 Russisch
869 Griechisch

Schwächen der Internationalisierung in den ersten 7 Bit

Die ASCII-Position 93 für die rechte eckige Klammer ] ist in der deutschen Zeichensatzvariante ISO 646-DE durch das große U mit Umlautpunkten Ü und in der dänischen Variante ISO 646-DK durch das große A mit Ring (Kroužek) Å ersetzt. Bei der Programmierung mussten dann die in vielen Programmiersprachen benutzten eckigen Klammern durch die entsprechenden nationalen Sonderzeichen ersetzt werden. Das verringerte die Lesbarkeit des Programmtextes und führte oft zu ungewollt komischen Ergebnissen, indem etwa die Einschaltmeldung des Apple II von „APPLE ][“ zu „APPLE ÜÄ“ mutierte.

Erweiterungen[Bearbeiten | Quelltext bearbeiten]

Windows-Codepages
874 Thai
932 Japanisch
936 Vereinfachtes Chinesisch
949 Koreanisch
950 Traditionelles Chinesisch
1250 Mitteleuropäisch
1251 Kyrillisch
1252 Westeuropäisch
1253 Griechisch
1254 Türkisch
1255 Hebräisch
1256 Arabisch
1257 Baltisch
1258 Vietnamesisch

Nutzung der übrigen 128 Positionen im Byte

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). Der Codepage 437 genannte Code war lange Zeit der am weitesten verbreitete, er kam auf dem IBM-PC unter englischen MS-DOS, und kommt heute noch im DOS-Fenster von englischen Microsoft Windows zur Anwendung. In deren deutschen Installationen ist seit MS-DOS 3.3 die westeuropäische Codepage 850 der Standard.

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, die in Deutschland als DIN 66303 übernommen wurde. Deutschsprachige Versionen von Windows (außer DOS-Fenster) verwenden die auf ISO 8859-1 aufbauende Kodierung Windows-1252 – daher sehen zum Beispiel die deutschen Umlaute falsch aus, wenn Textdateien unter DOS erstellt wurden und unter Windows betrachtet werden.

Jenseits von 8 Bit

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.

Der folgende Abschnitt ist nicht hinreichend mit Belegen (beispielsweise Einzelnachweisen) ausgestattet. Die fraglichen Angaben werden daher möglicherweise demnächst entfernt. Bitte hilf der Wikipedia, indem du die Angaben recherchierst und gute Belege einfügst. Näheres ist eventuell auf der Diskussionsseite oder in der Versionsgeschichte angegeben. Bitte entferne zuletzt diese Warnmarkierung.
Was soll durch welche Stellen in dem angegebenen umfangreichen Vorleseungsskript belegt werden?

Auch 8-Bit-Codes, in denen ein Byte für ein Zeichen stand, boten zu wenig Platz, um alle Zeichen der menschlichen Schriftkultur 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.[5] 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 der Unicode (in seinem Zeichenvorrat identisch mit ISO 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 erlaubte Codepoints 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 von UTF-7 in sieben Bit kodiert werden. UTF-8 entwickelt sich (2011) zum einheitlichen Standard unter den meisten Betriebssystemen. So nutzen unter anderem Apples Mac OS X sowie einige Linux-Distributionen standardmäßig UTF-8, und immer mehr Webseiten werden in UTF-8 erstellt.

Formatierungszeichen gegenüber Auszeichnungsprachen

ASCII enthält nur wenige Zeichen, die allgemeinverbindlich zur Formatierung oder Strukturierung von Text verwendet werden; diese gingen aus den Steuerbefehlen der Fernschreiber hervor. Dazu 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; dabei werden in DOS- und Windows-Systemen üblicherweise beide nacheinander verwendet, bei älteren Apple- und Commodore-Rechnern (ohne Amiga) nur der Wagenrücklauf und auf Unix-artigen sowie Amiga-Systemen nur der Zeilenvorschub. Die Verwendung weiterer Zeichen zur Textformatierung wird unterschiedlich gehandhabt. Zur Formatierung von Text werden inzwischen eher Markup-Sprachen wie zum Beispiel HTML verwendet.

Kompatible Zeichenkodierungen[Bearbeiten | Quelltext bearbeiten]

Die meisten Zeichenkodierungen sind so entworfen, dass sie für Zeichen im Bereich 0 … 127 den gleichen Code verwenden wie ASCII und den Bereich über 127 für weitere Zeichen benutzen.

Kodierungen mit fester Länge (Auswahl)[Bearbeiten | Quelltext bearbeiten]

ISO 8859
-1 Latin-1, Westeuropäisch
-2 Latin-2, Mitteleuropäisch
-3 Latin-3, Südeuropäisch
-4 Latin-4, Nordeuropäisch
-5 Kyrillisch
-6 Arabisch
-7 Griechisch
-8 Hebräisch
-9 Latin-5, Türkisch
-10 Latin-6, Nordisch
-11 Thai
-13 Latin-7, Baltisch
-14 Latin-8, Keltisch
-15 Latin-9, Westeuropäisch
-16 Latin-10, Südosteuropäisch

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 besprochen ASCII-Erweiterungen:

Kodierungen mit variabler Länge[Bearbeiten | Quelltext bearbeiten]

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:

ASCII-Tabelle[Bearbeiten | Quelltext bearbeiten]

Die folgende Tabelle gibt neben den hexadezimalen Codes auch noch die Dezimal- und Oktalcodes an.

Dez Hex Okt ASCII
0 0x00 000 NUL
1 0x01 001 SOH
2 0x02 002 STX
3 0x03 003 ETX
4 0x04 004 EOT
5 0x05 005 ENQ
6 0x06 006 ACK
7 0x07 007 BEL
8 0x08 010 BS
9 0x09 011 HT
10 0x0A 012 LF
11 0x0B 013 VT
12 0x0C 014 FF
13 0x0D 015 CR
14 0x0E 016 SO
15 0x0F 017 SI
16 0x10 020 DLE
17 0x11 021 DC1
18 0x12 022 DC2
19 0x13 023 DC3
20 0x14 024 DC4
21 0x15 025 NAK
22 0x16 026 SYN
23 0x17 027 ETB
24 0x18 030 CAN
25 0x19 031 EM
26 0x1A 032 SUB
27 0x1B 033 ESC
28 0x1C 034 FS
29 0x1D 035 GS
30 0x1E 036 RS
31 0x1F 037 US
Dez Hex Okt ASCII
32 0x20 040 SP
33 0x21 041 !
34 0x22 042 "
35 0x23 043 #
36 0x24 044 $
37 0x25 045 %
38 0x26 046 &
39 0x27 047 '
40 0x28 050
41 0x29 051  )
42 0x2A 052 *
43 0x2B 053 +
44 0x2C 054 ,
45 0x2D 055 -
46 0x2E 056 .
47 0x2F 057 /
48 0x30 060 0
49 0x31 061 1
50 0x32 062 2
51 0x33 063 3
52 0x34 064 4
53 0x35 065 5
54 0x36 066 6
55 0x37 067 7
56 0x38 070 8
57 0x39 071 9
58 0x3A 072 :
59 0x3B 073 ;
60 0x3C 074 <
61 0x3D 075 =
62 0x3E 076 >
63 0x3F 077 ?
Dez Hex Okt ASCII
64 0x40 100 @
65 0x41 101 A
66 0x42 102 B
67 0x43 103 C
68 0x44 104 D
69 0x45 105 E
70 0x46 106 F
71 0x47 107 G
72 0x48 110 H
73 0x49 111 I
74 0x4A 112 J
75 0x4B 113 K
76 0x4C 114 L
77 0x4D 115 M
78 0x4E 116 N
79 0x4F 117 O
80 0x50 120 P
81 0x51 121 Q
82 0x52 122 R
83 0x53 123 S
84 0x54 124 T
85 0x55 125 U
86 0x56 126 V
87 0x57 127 W
88 0x58 130 X
89 0x59 131 Y
90 0x5A 132 Z
91 0x5B 133 [
92 0x5C 134 \
93 0x5D 135 ]
94 0x5E 136 ^
95 0x5F 137 _
Dez Hex Okt ASCII
96 0x60 140 `
97 0x61 141 a
98 0x62 142 b
99 0x63 143 c
100 0x64 144 d
101 0x65 145 e
102 0x66 146 f
103 0x67 147 g
104 0x68 150 h
105 0x69 151 i
106 0x6A 152 j
107 0x6B 153 k
108 0x6C 154 l
109 0x6D 155 m
110 0x6E 156 n
111 0x6F 157 o
112 0x70 160 p
113 0x71 161 q
114 0x72 162 r
115 0x73 163 s
116 0x74 164 t
117 0x75 165 u
118 0x76 166 v
119 0x77 167 w
120 0x78 170 x
121 0x79 171 y
122 0x7A 172 z
123 0x7B 173 {
124 0x7C 174 |
125 0x7D 175 }
126 0x7E 176 ~
127 0x7F 177 DEL

Siehe auch[Bearbeiten | Quelltext bearbeiten]

Literatur[Bearbeiten | Quelltext bearbeiten]

  • Jacques André: Caractères numériques: introduction. In: Cahiers GUTenberg. Bd. 26, Mai 1997, ISSN 1257-2217, S. 5–44, (in französischer Sprache).
  • Yannis Haralambous: Fonts & encodings. From Unicode to advanced typography and everything in between. Übersetzt von P. Scott Horne. O'Reilly, Beijing u. a. 2007, ISBN 978-0-596-10242-5 (in englischer Sprache).
  • Peter Karow: Digitale Schriften. Darstellung und Formate. 2. verbesserte Auflage. Springer, Berlin u. a. 1992, ISBN 3-540-54917-X.
  • Mai-Linh Thi Truong, Jürgen Siebert, Erik Spiekermann (Hrsg.): FontBook. Digital Typeface Compendium (= FontBook 4). 4. überarbeitete und erweiterte Auflage. FSI FontShop International, Berlin 2006, ISBN 3-930023-04-0 (in englischer Sprache).

Weblinks[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. American Standards Association (Hrsg.): American Standard Code for Information Interchange. 1963 (Scans).
  2. Fred W. Smith: New American Standard Code for Information Interchange. In: Western Union Technical Review. April 1964, S. 50--58 (Scans).
  3. United States of America Standards Institute (Hrsg.): USA Standard Code for Information Interchange USAS X3.4-1967. 1967.
  4. 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 (ANSI INCITS 4-1986 (R2002) PDF; 1,7 MiB).
  5. Grundlagen der technischen Informatik für Technische Informatiker, HAW Hamburg (Memento vom 28. September 2007 im Internet Archive) (PDF)