ASCII ( / ˈ æ s k i /ASCII American Standard Code for Information Interchange)ist einZeichensatzstandardzur Darstellung von 95 ( auf die englische Sprachefokussierten)druckbaren Zeichenund33Steuerzeichen– insgesamt 128Codepunkten . Die verfügbaren Satzzeichen hatten einen bedeutenden Einfluss auf die Syntax von Programmiersprachen und Textauszeichnungen. ASCII prägte maßgeblich die Gestaltung der von modernen Computern verwendeten Zeichensätze; beispielsweiseentsprechen Unicode

ASCII kodiert jeden Codepunkt als Wert von 0 bis 127 – speicherbar als 7- Bit- Ganzzahl . [ 4 ] 95 Codepunkte sind druckbar, darunter die Ziffern 0 bis 9 , die Kleinbuchstaben a bis z , die Großbuchstaben A bis Z und die gebräuchlichen Satzzeichen . Beispielsweise iwird der Buchstabe θ als 105 ( dezimal ) dargestellt. ASCII definiert außerdem 33 nicht druckbare Steuerzeichen , die ursprünglich von Fernschreibern stammen und heute größtenteils veraltet sind. [ 5 ] Zu den noch gebräuchlichen Steuerzeichen gehören Wagenrücklauf , Zeilenvorschub und Tabulator .

ASCII fehlen Codepunkte für Zeichen mit diakritischen Zeichen und unterstützt daher Begriffe oder Namen wie „résumé“ , „jalapeño“ oder „René“ nicht direkt . Je nach Hardware- und Softwareunterstützung lassen sich einige diakritische Zeichen jedoch darstellen , indem man einen Buchstaben mit einem Backtick (`) oder einer Tilde (~) überschreibt .

Die Internet Assigned Numbers Authority (IANA) bevorzugt die Bezeichnung US-ASCII für diese Zeichenkodierung. [ 2 ]

ASCII ist einer der Meilensteine ​​des IEEE . [ 6 ]

Geschichte

ASCII ist die Standardisierung eines sieben Bit langen Fernschreibercodes , der teilweise aus früheren Telegrafencodes entwickelt wurde .

Die Arbeiten am ASCII-Standard begannen im Mai 1961, als der IBM -Ingenieur Bob Bemer dem Unterausschuss X3.2 der American Standards Association (ASA) (heute American National Standards Institute oder ANSI) einen Vorschlag unterbreitete. [ 7 ] Die erste Ausgabe des Standards erschien 1963 [ 8 ] zeitgleich mit der Einführung des Teletype Model 33. 1967 wurde er grundlegend überarbeitet [ 9 ] [ 10 ] und bis 1986 mehrfach aktualisiert. [ 11 ] Im Gegensatz zu früheren Telegrafencodes wie Baudot war ASCII so geordnet, dass die Sortierung (insbesondere alphabetisch) einfacher war, und bot zusätzliche Steuerelemente für andere Geräte als Fernschreiber. [ 11 ]

ASCII (1963). Abbildungen der entsprechenden Steuerelemente werden, sofern vorhanden, angezeigt, andernfalls ein grauer Punkt.

ASCII wurde unter der Schirmherrschaft eines Komitees der American Standards Association (ASA), dem sogenannten X3-Komitee, von dessen Unterkomitee X3.2 (später X3L2) und später von dessen Arbeitsgruppe X3.2.4 (heute INCITS ) entwickelt. Die ASA wurde später zum United States of America Standards Institute (USASI) [ 3 ] : 211 und schließlich zum American National Standards Institute (ANSI).

Nachdem die übrigen Sonderzeichen und Steuerzeichen hinzugefügt worden waren, wurde ASCII als ASA X3.4-1963 veröffentlicht. [ 8 ] [ 12 ] Dabei blieben 28 Codepositionen ohne zugewiesene Bedeutung, reserviert für zukünftige Standardisierungen, und ein Steuerzeichen war nicht zugewiesen. [ 3 ] : 66, 245 Damals gab es Diskussionen darüber, ob mehr Steuerzeichen anstelle des Kleinbuchstabenalphabets verwendet werden sollten. [ 3 ] : 435 Die Unentschlossenheit hielt nicht lange an: Im Mai 1963 schlug die CCITT-Arbeitsgruppe für das neue Telegrafenalphabet vor, den Tasten a 6 und 7 Kleinbuchstaben zuzuweisen. [ 13 ] [ 14 ] Die Internationale Organisation für Normung (ISO) TC 97 SC 2 stimmte im Oktober für die Aufnahme dieser Änderung in ihren Normenentwurf. [ 15 ] Die Arbeitsgruppe X3.2.4 stimmte der Umstellung auf ASCII auf ihrer Sitzung im Mai 1963 zu. [ 16 ] Die Platzierung der Kleinbuchstaben in den Strichen [ a ] ​​[ 13 ] 6 und 7 führte dazu, dass sich die Zeichen im Bitmuster von den Großbuchstaben um ein einziges Bit unterschieden, was die Groß-/Kleinschreibung-unabhängige Zeichenübereinstimmung und die Konstruktion von Tastaturen und Druckern vereinfachte.

Das X3-Komitee nahm weitere Änderungen vor. Es fügte die Zeichen für geschweifte Klammern und senkrechte Striche hinzu . [ 17 ] Einige Steuerzeichen wurden umbenannt – SOM wurde zu SOH . Andere wurden verschoben oder entfernt – RU wurde entfernt. [ 3 ] : Der ASCII-Standard 247–248 wurde anschließend als USAS X3.4-1967, [ 9 ] [ 18 ] dann als USAS X3.4-1968, [ 19 ] dann als ANSI X3.4-1977 und schließlich als ANSI X3.4-1986 aktualisiert . [ 11 ] [ 20 ]

Die Verwendung des ASCII-Formats für den Netzwerkaustausch wurde 1969 beschrieben. [ 21 ] Dieses Dokument wurde 2015 formell zum Internetstandard erhoben. [ 22 ]

Überarbeitungen

Im Standard X3.15 befasste sich das X3-Komitee auch mit der Übertragung von ASCII ( niedrigstwertiges Bit zuerst) [ 3 ] : 249–253 [ 29 ] und der Aufzeichnung auf Lochstreifen. Sie schlugen einen 9-Spur- Standard für Magnetbänder vor und versuchten, einige Lochkartenformate zu berücksichtigen .

Designüberlegungen

Bitbreite

Das Unterkomitee X3.2 entwickelte ASCII auf Grundlage der früheren Fernschreiber-Codierungssysteme. Wie andere Zeichenkodierungen legt auch ASCII eine Entsprechung zwischen digitalen Bitmustern und Zeichensymbolen (d. h. Graphemen und Steuerzeichen ) fest. Dies ermöglicht es digitalen Geräten, miteinander zu kommunizieren und zeichenorientierte Informationen wie Schriftsprache zu verarbeiten, zu speichern und zu übertragen. Vor der Entwicklung von ASCII umfassten die verwendeten Kodierungen 26 alphabetische Zeichen, 10 numerische Ziffern und 11 bis 25 spezielle grafische Symbole. Um all diese Zeichen sowie Steuerzeichen gemäß dem Standard des Internationalen Telegrafenalphabets Nr. 2 (ITA2) des Comité Consultatif International Téléphonique et Télégraphique (CCITT) von 1932 [ 30 ] [ 31 ] , FIELDATA (1956) und dem frühen EBCDIC (1963) abzudecken, waren für ASCII mehr als 64 Codes erforderlich.

ITA2 basierte seinerseits auf dem Baudot-Code , dem 5-Bit-Telegrafencode, den Émile Baudot 1870 erfand und 1874 patentieren ließ. [ 31 ]

Das Komitee erörterte die Möglichkeit einer Schiebefunktion (wie in ITA2 ), die es ermöglichen würde, mehr als 64 Codes durch einen Sechs-Bit-Code darzustellen . In einem verschobenen Code bestimmen einige Zeichencodes die Auswahlmöglichkeiten für die nachfolgenden Zeichencodes. Dies ermöglicht eine kompakte Kodierung, ist aber für die Datenübertragung weniger zuverlässig , da ein Fehler bei der Übertragung des Schiebecodes typischerweise einen großen Teil der Übertragung unlesbar macht. Das Normungskomitee entschied sich gegen die Schiebefunktion, weshalb ASCII mindestens einen Sieben-Bit-Code vorschreibt. [ 3 ] : 215 §13.6, 236 §4

Das Komitee erwog einen Acht-Bit-Code, da acht Bits ( Oktette ) es ermöglichen würden, zwei Ziffern mit BCD ( binary-coded decimal) effizient durch zwei Vier-Bit-Muster zu kodieren . Dies hätte jedoch zur Folge, dass für jede Datenübertragung acht Bits gesendet werden müssten, obwohl sieben ausreichen würden. Das Komitee entschied sich daher für einen Sieben-Bit-Code, um die Kosten der Datenübertragung zu minimieren. Da Lochstreifen zu dieser Zeit acht Bits an einer Position speichern konnten, boten sie zudem die Möglichkeit, bei Bedarf ein Paritätsbit zur Fehlerprüfung zu verwenden . [ 3 ] : 217 §c, 236 §5 Acht-Bit- Maschinen (mit Oktetten als nativem Datentyp), die keine Paritätsprüfung verwendeten, setzten das achte Bit typischerweise auf 0. [ 32 ]

Interne Organisation

Der Code selbst war so strukturiert, dass die meisten Steuerzeichen und alle Grafikzeichen zur besseren Übersichtlichkeit zusammen lagen. Die ersten beiden sogenannten ASCII-Zeichenblöcke [ a ] [ 13 ] (32 Positionen) waren für Steuerzeichen reserviert. [ 3 ] : 220, 236 8, 9) Das Leerzeichen musste vor den Grafiken stehen, um die Sortierung zu vereinfachen, und wurde daher an Position 20 (hexadezimal) platziert . [ 3 ] : 237 §10 Aus demselben Grund wurden viele Sonderzeichen, die üblicherweise als Trennzeichen verwendet wurden, vor die Ziffern gesetzt. Das Komitee entschied, dass die Unterstützung von 64-stelligen Großbuchstabenalphabeten wichtig sei , und wählte eine Struktur für ASCII, die es ermöglichte, den Code leicht auf einen nutzbaren 64-stelligen Satz von Grafikzeichen zu reduzieren, [ 3 ] : 228, 237 §14 wie im DEC SIXBIT- Code (1963) geschehen . Kleinbuchstaben wurden daher nicht mit Großbuchstaben vermischt . Um die Möglichkeit zur Darstellung von Kleinbuchstaben und anderen Grafiken zu erhalten, wurden die Sonder- und Zahlencodes vor den Buchstaben angeordnet, und der Buchstabe A wurde an Position 41 im Hexadezimalsystem platziert, um dem Entwurf der entsprechenden britischen Norm zu entsprechen. [ 3 ] : 238 §18 Die Ziffern 0–9 sind mit 011 gekennzeichnet, die verbleibenden 4 Bits entsprechen jedoch ihren jeweiligen Binärwerten, wodurch die Konvertierung mit binärkodierten Dezimalzahlen unkompliziert ist (beispielsweise wird 5 als 011 0101 kodiert , wobei 5 binär 0101 entspricht).

Viele der nicht-alphanumerischen Zeichen wurden so positioniert, dass sie ihrer verschobenen Position auf Schreibmaschinen entsprachen; eine wichtige Besonderheit ist, dass diese auf mechanischen , nicht auf elektrischen Schreibmaschinen basierten. [ 33 ] Mechanische Schreibmaschinen folgten dem De-facto- Standard der Remington Nr. 2 (1878), der ersten Schreibmaschine mit Umschalttaste. Die verschobenen Werte 23456789-waren "#$%_&'() – frühe Schreibmaschinen ließen 0 und 1 aus und verwendeten stattdessen O (Großbuchstabe o ) und l (Kleinbuchstabe l ), aber 0- und 1 1!- 0)Paare wurden Standard, sobald 0 und 1 üblich wurden. So !"#$%wurden sie in ASCII auf der zweiten Stange platziert, [ a ] ​​[ 13 ] Positionen 1–5, entsprechend den Ziffern 1–5 auf der benachbarten Stange. [ a ] ​​[ 13 ] Die Klammern konnten jedoch nicht 9 und 0 entsprechen , da die Stelle, die 0 entsprach , vom Leerzeichen belegt war. Dies wurde dadurch erreicht, dass der Unterstrich (<i> 6</i>_ ) entfernt und die verbleibenden Zeichen verschoben wurden, was vielen europäischen Schreibmaschinen entsprach, die die Klammern bei der 8 und 9 platzierten . Diese Abweichung von Schreibmaschinen führte zu bitpaarigen Tastaturen , insbesondere zum Teletype Modell 33 , das im Gegensatz zu traditionellen mechanischen Schreibmaschinen das nach links verschobene Layout entsprechend ASCII verwendete.

Elektrische Schreibmaschinen, insbesondere die IBM Selectric (1961), verwendeten ein etwas anderes Layout, das sich – insbesondere nach dem IBM PC (1981), vor allem dem Modell M (1984) – de facto zum Standard auf Computern entwickelt hat . Daher entsprechen die Verschiebewerte für Symbole auf modernen Tastaturen nicht mehr so ​​genau der ASCII-Tabelle wie bei früheren Tastaturen. Das Tastenpaar stammt ebenfalls aus der Zeit des IBM PC Nr. 2 und wurde auf einigen Tastaturen verwendet (andere, darunter auch der Nr. 2, verschoben Komma und Punkt nicht, sodass sie ohne Verschiebung in Großbuchstaben verwendet werden konnten). ASCII trennte das Tastenpaar jedoch (ebenfalls aus der Zeit des IBM PC Nr. 2) und ordnete mathematische Symbole (nach verschiedenen Konventionen, üblicherweise ) neu an . /?,< .>,.;:-* =+:* ;+ -=

Einige damals gebräuchliche Schreibmaschinenzeichen wurden nicht aufgenommen, insbesondere ½ ¼ ¢, während ^ ` ~ als diakritische Zeichen für den internationalen Gebrauch und < >für mathematische Zwecke zusammen mit den einfachen Linienzeichen \ |(zusätzlich zu den üblichen /) enthalten waren. Das @ -Symbol wurde in Kontinentaleuropa nicht verwendet, und das Komitee ging davon aus, dass es in der französischen Variante durch ein akzentuiertes À ersetzt würde. Daher wurde das @-Symbol an Position 40 hexadezimal , direkt vor dem Buchstaben A, platziert . [ 3 ] : 243

Als wesentlich für die Datenübertragung erachtete Steuercodes galten: Nachrichtenbeginn (SOM), Adressende (EOA), Nachrichtenende (EOM), Übertragungsende (EOT), „Wer bist du?“ (WRU), „Bist du?“ (RU), eine reservierte Gerätesteuerung (DC0), synchroner Leerlauf (SYNC) und Bestätigung (ACK). Diese wurden so positioniert, dass der Hamming-Abstand zwischen ihren Bitmustern maximiert wurde. [ 3 ] : 243–245

Reihenfolge der Charaktere

Die ASCII-Code-Reihenfolge wird auch als alphabetische ASCII- Reihenfolge bezeichnet. [ 34 ] Die Datensortierung erfolgt mitunter in dieser Reihenfolge anstatt in der „standardmäßigen“ alphabetischen Reihenfolge ( Sortierungssequenz ). Die wichtigsten Abweichungen von der ASCII-Reihenfolge sind:

  • Alle Großbuchstaben stehen vor den Kleinbuchstaben; zum Beispiel steht „Z“ vor „a“.
  • Ziffern und viele Satzzeichen stehen vor Buchstaben.

Ein Zwischenschritt wandelt Großbuchstaben in Kleinbuchstaben um, bevor die ASCII-Werte verglichen werden.

Zeichensatz

ASCII (1977/1986)
0 1 2 3 4 5 6 7 8 9 A B C D E F
0x NULSOHSTXETXEOTENQACKBEL BS  HT  LF  VT  FF  CR  ALSO  SI 
1x DLEDC1DC2DC3DC4NAKSYNETBDÜRFEN EM SUBESC FS  GS  RS  UNS 
2x  SP !"#$%&'()*+,-Die/
3x 0123456789:;<=>?
4x @ABCDEFGHICHJKLMNO
5x PQRSTUVWXYZ[\]^_
6x `ABCDeFGHichJklMNO
7x PQRSTuvwXyz{|}~DEL
  Geändert oder hinzugefügt in der Version von 1963
  Sowohl in der Fassung von 1963 als auch im Entwurf von 1965 wurde dies geändert.

Charaktergruppen

Steuerzeichen

Frühe Symbole für die 32 Steuerzeichen, das Leerzeichen und das Löschzeichen ( ISO 2047 , MIL-STD-188-100, 1972)

ASCII reserviert die ersten 32 Codepunkte (Zahlen 0–31 dezimal) und den letzten (Zahl 127 dezimal) für Steuerzeichen . Diese Codes dienen der Ansteuerung von Peripheriegeräten (z. B. Druckern ) oder der Bereitstellung von Metainformationen über Datenströme, beispielsweise auf Magnetbändern. Trotz ihres Namens stellen diese Codepunkte keine druckbaren Zeichen dar (sie sind also keine Zeichen, sondern Signale). Zu Debugging-Zwecken werden ihnen Platzhaltersymbole (wie in ISO 2047 und seinen Vorgängern) zugewiesen.

Beispielsweise steht das Zeichen 0x0A für den Zeilenvorschub (der den Papiertransport im Drucker auslöst), und das Zeichen 8 für die Rücktaste . RFC  2822 bezeichnet Steuerzeichen, die weder Wagenrücklauf noch Zeilenvorschub oder Leerzeichen enthalten , als Nicht-Leerzeichen-Steuerzeichen. [ 35 ] Abgesehen von den Steuerzeichen, die die elementare zeilenorientierte Formatierung vorschreiben, definiert ASCII keinen Mechanismus zur Beschreibung der Struktur oder des Erscheinungsbilds von Text innerhalb eines Dokuments. Andere Systeme, wie z. B. Auszeichnungssprachen , dienen der Adressierung von Seiten- und Dokumentlayout und -formatierung.

Der ursprüngliche ASCII-Standard verwendete lediglich kurze beschreibende Phrasen für jedes Steuerzeichen. Die dadurch entstandene Mehrdeutigkeit war teilweise beabsichtigt, beispielsweise wenn ein Zeichen in einer Terminalverbindung oder in einem Datenstrom etwas anders verwendet werden sollte .

Das wohl einflussreichste Gerät, das die Interpretation dieser Zeichen beeinflusste, war der Teletype Model 33 ASR, ein Druckterminal mit optionalem Lochstreifenleser und -stanzer. Lochstreifen waren bis in die 1980er-Jahre ein weit verbreitetes Medium zur langfristigen Programmspeicherung, da sie kostengünstiger und in mancher Hinsicht weniger empfindlich als Magnetbänder waren. Insbesondere die Belegung der Codes 17 (Strg-Q, DC1, auch bekannt als XON), 19 (Strg-S, DC3, auch bekannt als XOFF) und 127 ( Löschen ) durch den Teletype Model 33 etablierte sich als Standard. Der Model 33 war außerdem dafür bekannt, die Beschreibung von Strg-G (Code 7, BEL, akustisches Signal für den Bediener) wörtlich zu nehmen: Das Gerät enthielt eine Glocke, die beim Empfang des Zeichens BEL ertönte. Da auf der Oberseite der O-Taste auch ein Pfeil-nach-links-Symbol (aus ASCII-1963, das dieses Zeichen anstelle des Unterstrichs hatte ) abgebildet war, wurde auch eine nicht konforme Verwendung des Codes 15 (Strg+O, Umschalttaste rein), der als „vorheriges Zeichen löschen“ interpretiert wurde, von vielen frühen Timesharing-Systemen übernommen, geriet aber schließlich in Vergessenheit.

Wenn ein mit einem automatischen Lochstreifenleser ausgestatteter Teletype 33 ASR ein Control-S (XOFF, Abkürzung für „Senden aus“) empfing, stoppte dies den Lochstreifenleser; der Empfang eines Control-Q (XON, „Senden an“) setzte die Ausgabe fort. Diese sogenannte Flusssteuerungstechnik wurde von einigen frühen Computerbetriebssystemen als „Handshake“-Signal übernommen, das den Sender vor einem drohenden Pufferüberlauf warnte und die Übertragung stoppen sollte . Sie wird bis heute in vielen Systemen als manuelle Ausgabesteuerungstechnik verwendet. In manchen Systemen behält Control-S seine Bedeutung, Control-Q wird jedoch durch ein zweites Control-S ersetzt, um die Ausgabe fortzusetzen.

Der 33 ASR konnte auch so konfiguriert werden, dass er mit Strg+R (DC2) und Strg+T (DC4) den Lochstreifenstanzer startete und stoppte; bei einigen Geräten mit dieser Funktion lautete die entsprechende Beschriftung der Steuerzeichen auf der Tastenkappe über dem Buchstaben jeweils TAPE und TAPE . [ 36 ]

Entf vs. Rücktaste

Da der Fernschreiber seinen Schreibkopf nicht rückwärts bewegen konnte, besaß er keine Taste für die Rücktaste (BS). Stattdessen gab es eine Taste mit RUB OUTder Bezeichnung 127 (DEL). Diese Taste diente dazu, Fehler auf einem manuell befüllten Lochstreifen zu löschen: Der Bediener musste einen Knopf am Locher drücken, um den Lochstreifen zurückzuspulen, und anschließend die Korrektur eingeben. Dadurch wurden alle Löcher gestanzt und der Fehler durch ein zu ignorierendes Zeichen ersetzt. [ 37 ] Fernschreiber wurden häufig mit den preisgünstigeren Computern der Digital Equipment Corporation (DEC) verwendet. Da diese Systeme mit den verfügbaren Tasten auskommen mussten, wurde das DEL-Zeichen zum Löschen des vorherigen Zeichens verwendet. [ 38 ] [ 39 ] Aus diesem Grund sendeten DEC-Videoterminals (standardmäßig) das DEL-Zeichen für die mit „Backspace“ beschriftete Taste, während die separate Taste „Delete“ eine Escape-Sequenz sendete . Viele andere Terminals verwendeten hingegen das BS-Zeichen für die Rücktaste.

Die frühen Unix-TTY-Treiber erlaubten im Gegensatz zu einigen modernen Implementierungen nur die Einstellung eines einzigen Zeichens zum Löschen des vorherigen Zeichens bei der kanonischen Eingabeverarbeitung (wo ein sehr einfacher Zeileneditor verfügbar ist). Dies konnte auf BS oder DEL eingestellt werden, aber nicht auf beides. Dies führte zu wiederkehrenden Mehrdeutigkeiten, da Benutzer je nach verwendetem Terminal entscheiden mussten ( Shells , die Zeilenbearbeitung erlauben, wie ksh , bash und zsh , verstehen beides). Die Annahme, dass keine Taste ein BS-Zeichen sendet, ermöglichte die Verwendung von Strg+H für andere Zwecke, wie beispielsweise den Präfixbefehl „help“ in GNU Emacs . [ 40 ]

Flucht

Viele Steuerzeichen haben heute Bedeutungen, die sich deutlich von ihren ursprünglichen unterscheiden. Das Escape-Zeichen (ESC, Code 27) beispielsweise sollte ursprünglich ermöglichen, andere Steuerzeichen als Literale anstatt ihrer eigentlichen Bedeutung zu senden – eine sogenannte Escape-Sequenz. Diese Bedeutung von „Escape“ findet sich auch in URL-Kodierungen, C- Zeichenketten und anderen Systemen, in denen bestimmte Zeichen eine reservierte Bedeutung haben. Im Laufe der Zeit wurde diese Interpretation übernommen und schließlich geändert.

In der modernen Verwendung signalisiert ein an das Terminal gesendetes ESC üblicherweise den Beginn einer Befehlssequenz. Diese kann genutzt werden, um den Cursor zu positionieren, einen Bereich zu scrollen, verschiedene Terminaleigenschaften festzulegen oder abzufragen und vieles mehr. Sie haben in der Regel die Form eines sogenannten ANSI-Escape-Codes (oft beginnend mit einem „ Control Sequence Introducer “, „CSI“, „ ESC [ “) aus ECMA-48 (1972) und seinen Nachfolgern. Einige Escape-Sequenzen haben keinen solchen Introducer, wie beispielsweise der Befehl „Reset to Initial State“, „RIS“, „ ESC c “. [ 41 ]

Im Gegensatz dazu wird ein vom Terminal gelesenes ESC-Zeichen meist als externes Zeichen verwendet, um einen Vorgang oder einen speziellen Modus zu beenden, wie beispielsweise in den Texteditoren TECO und vi . In grafischen Benutzeroberflächen (GUIs) und Fenstersystemen bewirkt ESC im Allgemeinen, dass eine Anwendung ihren aktuellen Vorgang abbricht oder vollständig beendet wird .

Zeilenende

Die Neubelegung bestimmter Steuerzeichen führte zu Problemen beim Übertragen von Klartextdateien zwischen Systemen. Das beste Beispiel hierfür ist das Zeilenumbruchproblem in verschiedenen Betriebssystemen . Fernschreiber erforderten, dass eine Textzeile mit einem Wagenrücklauf (um den Druckkopf an den Zeilenanfang zu bewegen) und anschließend einem Zeilenvorschub (um das Papier um eine Zeile weiterzuschieben) abgeschlossen wurde. Der Name „Wagenrücklauf“ rührt daher, dass sich bei einer mechanischen Schreibmaschine der Wagen mit dem Papier bewegt, während die Typenhebel, die auf das Farbband schlagen, stillstehen. Der gesamte Wagen muss nach rechts geschoben („zurückgeschoben“) werden, um das Papier für die nächste Zeile zu positionieren.

Die Betriebssysteme von DEC ( OS/8 , RT-11 , RSX-11 , RSTS , TOPS-10 usw.) speicherten beide Zeichen am Ende jeder Zeile in Textdateien, wie es für Fernschreiber erforderlich war. Als die sogenannten „Glas-TTYs“ (später CRTs oder „dumme Terminals“ genannt) eingeführt wurden, folgten sie derselben Logik und erwarteten die gleichen CR- und LF-Zeichen. Gary Kildall ließ sich bei der Entwicklung von CP/M von einigen Konventionen der Kommandozeilenschnittstelle des DEC-Betriebssystems RT-11 inspirieren.

Bis zur Einführung von IBM PC DOS im Jahr 1981 hatte IBM hier keinen Einfluss, da ihre Betriebssysteme der 1970er-Jahre EBCDIC-Kodierung anstelle von ASCII verwendeten und auf Lochkarteneingabe und Zeilendruckerausgabe ausgerichtet waren, bei denen das Konzept des Wagenrücklaufs (CRLF) keine Bedeutung hatte. IBMs PC DOS (von Microsoft auch als MS-DOS vermarktet ) übernahm die CRLF-Konvention, da es lose auf CP/M basierte [ 42 ] , und Windows wiederum übernahm sie von MS-DOS.

Die Verwendung von CR und LF am Ende jeder Zeile in einem einfachen Textdokument oder Datenstrom entsprach den Anforderungen von Terminals und Druckern zur Anzeige dieser Daten. Multics führte eine Neuerung ein: Es verwendete nur ein Zeichen (LF) für das Zeilenende in gespeicherten Dateien und Datenströmen. [ 43 ] : 357 Bei der Ausgabe wandelt der TTY-Treiber das LF in CRLF um, sodass Dateien ohne explizite Dateiformatkonvertierung auf einem Terminal ausgegeben werden können. Unix- und Unix-ähnliche Systeme sowie Amiga- Systeme übernahmen dieses Design von Multics . In UNIX- Dokumenten wird der Zeilenumbruch mit „newline“ oder „NL“ bezeichnet. Im Gegensatz dazu verwendeten Radio Shack TRS-80 , Apple DOS , Apple ProDOS und das klassische Mac OS einen einzelnen Wagenrücklauf (CR) zum Zeilenende. Apples späteres Betriebssystem Mac OS X (heute macOS ) basiert auf Unix und verwendet daher den Zeilenvorschub (LF).

Zu den an das ARPANET angeschlossenen Computern gehörten Maschinen mit Betriebssystemen wie TOPS-10 und TENEX , die CR-LF-Zeilenumbrüche verwendeten; Betriebssystemen wie Multics mit LF-Zeilenumbrüchen; und Betriebssystemen wie OS/360 , die Zeilen als Zeichenanzahl gefolgt von den Zeilenzeichen darstellten und EBCDIC anstelle der ASCII-Kodierung verwendeten. Um die Kommunikation zwischen all diesen Systemen zu ermöglichen, definierte das Telnet -Protokoll ein „Network Virtual Terminal“ (NVT), in dem ein einheitliches Textformat (ASCII mit CR-LF-Zeilenumbrüchen) für die Übertragung verwendet wurde und jedes System in seine eigene native Darstellung konvertierte bzw. von dieser konvertierte. [ 44 ]

Das File Transfer Protocol ( FTP) übernahm das Telnet-Protokoll, einschließlich des Network Virtual Terminal (NVT), zur Übermittlung von Befehlen und zum Transfer von Textdateien (bekannt als „ASCII-Modus“). [ 45 ] [ 46 ] Internet-E-Mail basiert auf dem NVT. [ 47 ] Das HTTP des World Wide Web verwendet ein modifiziertes NVT: Der Standard erlaubt einzelne CR- und LF-Zeichen, schreibt aber vor, dass jedes als NVT CRLF interpretiert werden muss. [ 48 ]

Komplexität entstand in netzwerkseitigen Systemen, die dem NVT-Mechanismus nicht folgten, wie beispielsweise einige Versionskontrollsysteme. [ 49 ] Fehler können die native Implementierung eines Systems für andere Systeme im Internet offenlegen und so Datenbeschädigung verursachen. [ 50 ]

Dateiende/Streamende

Der PDP-6-Monitor [ 38 ] und sein Nachfolger TOPS-10 [ 39 ] , der PDP-10 , verwendeten Strg+Z (SUB) als Dateiende-Zeichen für Terminaleingaben. Einige Betriebssysteme wie CP/M erfassten die Dateilänge nur in Einheiten von Festplattenblöcken und nutzten Strg+Z, um das Ende des eigentlichen Textes in der Datei zu markieren. [ 51 ] Aus diesen Gründen wurde EOF ( Ende der Datei ) umgangssprachlich und konventionell als dreibuchstabiges Akronym für Strg+Z anstelle von SUBstitute verwendet . Das Textendezeichen ( ETX ), auch bekannt als Strg+C , war aus verschiedenen Gründen ungeeignet, während die Verwendung von Strg+Z als Steuerzeichen zum Beenden einer Datei analog zur Position des Buchstabens Z am Ende des Alphabets ist und als sehr praktische Eselsbrücke dient . Eine historisch gängige und immer noch weit verbreitete Konvention verwendet die ETX-Zeichenkonvention, um ein Programm über einen Eingabedatenstrom, üblicherweise von der Tastatur, zu unterbrechen und anzuhalten.

Der Unix-Terminaltreiber verwendet das Übertragungsendezeichen ( EOT ), auch bekannt als Strg+D, um das Ende eines Datenstroms anzuzeigen.

In der Programmiersprache C und gemäß den Unix-Konventionen wird das Nullzeichen verwendet, um Textzeichenketten zu beenden ; solche nullterminierten Zeichenketten können in der Abkürzung als ASCIZ oder ASCIIZ bezeichnet werden, wobei Z hier für "Null" steht.

Codetabelle

Steuercodetabelle

BinärOktoberDezemberVerhexenAbkürzungUnicode -Steuerungsbilder [ b ]Caret-Notation [ c ]C-Escape-Sequenz [ d ]Name (1967)
196319651967
000 0000000000 NULLNUL␀^@\0 [ e ]Null
000 0001001101 SOMSOH␁^AAnfang der Überschrift
000 0010002202 EOASTX␂^BTextanfang
000 0011003303 EOMETX␃^CEnde des Textes
000 0100004404 EOT␄^DEnde der Übertragung
000 0101005505 WRUENQ␅^EAnfrage
000 0110006606 RUACK␆^FAnerkennung
000 0111007707 GLOCKEBEL␇^G\AGlocke (Alarm)
000 1000010808 FE,BS␈^H\BRücktaste [ f ] [ g ]
000 1001011909 HT/SKHT␉^I\THorizontaler Tabulator [ h ]
000 1010012100A LF␊^J\NZeilenvorschub
000 1011013110B VTABVT␋^K\vVertikale Registerkarte
000 1100014120 °C FF␌^L\FSeitenvorschub
000 1101015130D CR␍^M\RRückfahrt [ i ]
000 1110016140E ALSO␎^NAusziehen
000 1111017150F SI␏^OSchicht einlegen
001 00000201610 DC0DLE␐^PDatenverbindungsabbruch
001 00010211711 DC1␑^QGerätesteuerung 1 (oft XON )
001 00100221812 DC2␒^RGerätesteuerung 2
001 00110231913 DC3␓^SGerätesteuerung 3 (oft XOFF )
001 01000242014 DC4␔^TGerätesteuerung 4
001 01010252115 FEHLERNAK␕^UNegative Bestätigung
001 01100262216 SYNCHRONISATIONSYN␖^VSynchroner Leerlauf
001 01110272317 LEMETB␗^WEnde des Übertragungsblocks
001 10000302418 S0DÜRFEN␘^XStornieren
001 10010312519 S1EM␙^YEnde des Mediums
001 1010032261A S2SSSUB␚^ZErsatz
001 1011033271B S3ESC␛^[e [ j ]Flucht [ k ]
001 1100034281C S4FS␜^\Dateitrennzeichen
001 1101035291D S5GS␝^]Gruppentrennzeichen
001 1110036301E S6RS␞^^ [ l ]Datensatztrennzeichen
001 1111037311F S7UNS␟^_Einheitentrenner
111 11111771277F DEL␡^?Löschen [ m ] [ g ]

Andere Darstellungsformen können von Spezialgeräten verwendet werden, zum Beispiel ISO 2047- Grafiken oder Hexadezimalzahlen .

Druckbare Zeichentabelle

Zum Zeitpunkt ihrer Einführung erzeugten die Codes 20 hex bis 7E hex den Druck eines sichtbaren Zeichens (einer Glyphe) und wurden daher als „druckbare Zeichen“ bezeichnet. Diese Codes repräsentieren Buchstaben, Ziffern, Satzzeichen und einige wenige sonstige Symbole. Insgesamt gibt es 95 druckbare Zeichen. [ n ]

Der Leerraum zwischen Wörtern, der durch die Leertaste einer Tastatur erzeugt wird, hat den Hexadezimalcode 20. Da das Leerzeichen im gedruckten Text sichtbar ist, gilt es als „druckbares Zeichen“, obwohl es insofern einzigartig ist, als es kein sichtbares Glyphenzeichen besitzt. Es ist gemäß dem ASCII-Standard in der Tabelle der druckbaren Zeichen und nicht in der Tabelle der Steuerzeichen aufgeführt. [ 3 ] : 223 [ 21 ]

Der Hexadezimalcode 7F entspricht dem nicht druckbaren Steuerzeichen "Löschen" (DEL) und ist in der Steuerzeichentabelle aufgeführt.

Frühere Versionen von ASCII verwendeten den Pfeil nach oben anstelle des Caret-Zeichens (5E hex ) und den Pfeil nach links anstelle des Unterstrichs (5F hex ). [ 8 ] [ 52 ]

BinärOktoberDezemberVerhexenGlyphe
196319651967
010 00000403220 Leerzeichen (kein sichtbares Glyphe)
010 00010413321!
010 00100423422"
010 00110433523#
010 01000443624$
010 01010453725%
010 01100463826&
010 01110473927'
010 10000504028(
010 10010514129)
010 1010052422A*
010 1011053432B+
010 1100054442C,
010 1101055452D-
010 1110056462EDie
010 1111057472F/
011 000006048300
011 000106149311
011 001006250322
011 001106351333
011 010006452344
011 010106553355
011 011006654366
011 011106755377
011 100007056388
011 100107157399
011 1010072583A:
011 1011073593B;
011 1100074603C<
011 1101075613D=
011 1110076623E>
011 1111077633F?
100.0001006440@`@
100 00011016541A
100 00101026642B
100 00111036743C
100 01001046844D
100 01011056945E
100 01101067046F
100 01111077147G
100 10001107248H
100 10011117349ICH
100 1010112744AJ
100 1011113754BK
100 1100114764CL
100 1101115774DM
100 1110116784EN
100 1111117794FO
101 00001208050P
101 00011218151Q
101 00101228252R
101 00111238353S
101 01001248454T
101 01011258555U
101 01101268656V
101 01111278757W
101 10001308858X
101 10011318959Y
101 1010132905AZ
101 1011133915B[
101 1100134925C\~\
101 1101135935D]
101 1110136945E↑^
101 1111137955F←_
110 00001409660@`
110 00011419761A
110 00101429862B
110 00111439963C
110 010014410064D
110 010114510165e
110 011014610266F
110 011114710367G
110 100015010468H
110 100115110569ich
110 10101521066AJ
110 10111531076Bk
110 11001541086Cl
110 11011551096DM
110 11101561106EN
110 11111571116FO
111 000016011270P
111 000116111371Q
111 001016211472R
111 001116311573S
111 010016411674T
111 010116511775u
111 011016611876v
111 011116711977w
111 100017012078X
111 100117112179y
111 10101721227Az
111 10111731237B{
111 11001741247CACK¬|
111 11011751257D}
111 11101761267EESC|~

Verwendung

ASCII wurde 1963 erstmals kommerziell als Sieben-Bit-Fernschreibercode für das TWX-Netzwerk (TeletypeWriter eXchange) von American Telephone & Telegraph eingesetzt. TWX nutzte ursprünglich den älteren Fünf-Bit-Code ITA2 , der auch vom konkurrierenden Fernschreibersystem Telex verwendet wurde. Bob Bemer führte Funktionen wie die Escape-Sequenz ein . [ 7 ] Sein britischer Kollege Hugh McGregor Ross trug maßgeblich zur Popularisierung dieser Arbeit bei – laut Bemer „so sehr, dass der Code, der später als ASCII bekannt werden sollte, in Europa zunächst Bemer-Ross-Code genannt wurde “. [ 53 ] Aufgrund seiner umfangreichen Arbeit an ASCII gilt Bemer als „Vater von ASCII“. [ 54 ]

Am 11. März 1968 ordnete US-Präsident Lyndon B. Johnson an, dass alle von der US-Bundesregierung gekauften Computer ASCII unterstützen müssen, und erklärte: [ 55 ] [ 56 ] [ 57 ]

Ich habe außerdem die Empfehlungen des Handelsministers [ Luther H. Hodges ] bezüglich der Standards für die Aufzeichnung des Standardcodes für den Informationsaustausch (SCI) auf Magnet- und Lochstreifen bei deren Verwendung in Computersystemen genehmigt. Alle Computer und zugehörigen Gerätekonfigurationen, die ab dem 1. Juli 1969 in den Bestand der Bundesregierung aufgenommen wurden, müssen die Fähigkeit besitzen, den Standardcode für den Informationsaustausch (SCI) und die in den Standards für Magnet- und Lochstreifen vorgeschriebenen Formate zu verwenden, wenn diese Medien zum Einsatz kommen.

Bis Dezember 2007 war ASCII die gebräuchlichste Zeichenkodierung im World Wide Web , bis sie von UTF-8 abgelöst wurde; UTF-8 ist abwärtskompatibel zu ASCII. [ 58 ] [ 59 ] [ 60 ]

Varianten und Ableitungen

Mit der weltweiten Verbreitung der Computertechnologie entwickelten verschiedene Normungsorganisationen und Unternehmen zahlreiche ASCII-Varianten, um die Darstellung nicht-englischer Sprachen mit lateinischen Alphabeten zu erleichtern. Einige dieser Varianten lassen sich als „ ASCII-Erweiterungen “ bezeichnen, obwohl dieser Begriff mitunter fälschlicherweise für alle Varianten verwendet wird, auch für solche, die die ASCII-Zeichentabelle im 7-Bit-Bereich nicht beibehalten. Darüber hinaus wurden die ASCII-Erweiterungen auch fälschlicherweise als ASCII bezeichnet.

7-Bit-Codes

Von Anfang an war ASCII [ 61 ] nur als eine von mehreren nationalen Varianten eines internationalen Zeichenkodierungsstandards gedacht.

Andere internationale Normungsorganisationen haben Zeichenkodierungen wie ISO 646 (1967) ratifiziert, die mit ASCII identisch oder nahezu identisch sind und Erweiterungen für Zeichen außerhalb des englischen Alphabets sowie für Symbole außerhalb der USA enthalten, wie beispielsweise das Symbol für das britische Pfund Sterling (£) auf Seite 1104. Fast jedes Land benötigte eine angepasste Version von ASCII, da ASCII nur den Bedürfnissen der USA und einiger weniger anderer Länder entsprach. Kanada beispielsweise hatte eine eigene Version, die französische Zeichen unterstützte.

Viele andere Länder entwickelten Varianten von ASCII, um nicht-englische Buchstaben (z. B. é , ñ , ß , Ł ), Währungssymbole (z. B. £ , ¥ ) usw. einzuschließen. Siehe auch YUSCII (Jugoslawien).

Es würde die meisten Zeichen gemeinsam haben, aber andere lokal nützliche Zeichen mehreren Codepunkten zuordnen , die für den „nationalen Gebrauch“ reserviert sind. Die vier Jahre, die zwischen der Veröffentlichung von ASCII-1963 und der ersten Annahme einer internationalen Empfehlung durch die ISO im Jahr 1967 [ 62 ] vergingen , führten jedoch dazu, dass die von ASCII für den nationalen Gebrauch festgelegten Zeichen als De-facto -Standards für die Welt galten, was zu Verwirrung und Inkompatibilität führte, sobald andere Länder begannen, ihre eigenen Zuordnungen zu diesen Codepunkten vorzunehmen.

ISO/IEC 646 ist wie ASCII ein 7-Bit-Zeichensatz. Da er keine zusätzlichen Codes bereitstellt, kodierten dieselben Codepunkte in verschiedenen Ländern unterschiedliche Zeichen. Escape-Codes wurden zwar definiert, um die jeweilige nationale Variante eines Textes anzugeben, wurden aber selten verwendet. Daher war es oft unmöglich zu wissen, mit welcher Variante gearbeitet werden sollte und welches Zeichen ein Code repräsentierte. Im Allgemeinen konnten Textverarbeitungssysteme ohnehin nur mit einer einzigen Variante umgehen.

Da die Klammer- und geschweiften Klammerzeichen von ASCII „nationalen“ Codepunkten zugeordnet waren, die in anderen nationalen Varianten von ISO/IEC 646 für Akzentbuchstaben verwendet wurden, musste ein deutscher, französischer, schwedischer usw. Programmierer, der seine nationale Variante von ISO/IEC 646 anstelle von ASCII verwendete, etwas wie beispielsweise schreiben und somit auch lesen:

ä aÄiÜ = 'Ön'; ü

anstatt

{ a[i] = '\n'; }

C-Trigraphen wurden entwickelt, um dieses Problem für ANSI C zu lösen . Ihre späte Einführung und die uneinheitliche Implementierung in Compilern schränkten jedoch ihre Verwendung ein. Viele Programmierer nutzten weiterhin ASCII, sodass Klartext in Schwedisch, Deutsch usw. (z. B. in E-Mails oder Usenet ) mitten in Wörtern geschweifte Klammern wie „{, }“ und ähnliche Varianten enthielt – etwas, woran sich die Programmierer gewöhnt hatten. So konnte beispielsweise ein schwedischer Programmierer, der einem anderen Programmierer eine E-Mail schrieb und fragte, ob sie Mittagessen gehen sollten, die Antwort „N{ jag har sm|rg}sar“ erhalten, was eigentlich „Nä jag har smörgåsar“ (Nein, ich habe Sandwiches) bedeuten sollte.

In Japan und Korea wird, Stand 2020, eine Variante des ASCII-Zeichensatzes verwendet, bei der der Backslash (5C hexadezimal) als ¥ ( Yen-Zeichen in Japan) bzw. ₩ ( Won-Zeichen in Korea) dargestellt wird. Das bedeutet beispielsweise, dass der Dateipfad C:\Users\Smith in Japan als C:¥Users¥Smith und in Korea als C:₩Users₩Smith angezeigt wird.

In Europa werden für Fernsehuntertitel Teletext-Zeichensätze verwendet, die Varianten von ASCII darstellen. Diese werden vom World System Teletext definiert und mithilfe des DVB-TXT-Standards für die Einbettung von Teletext in DVB-Übertragungen ausgestrahlt. [ 63 ] Falls die Untertitel ursprünglich für Teletext erstellt und konvertiert wurden, sind die abgeleiteten Untertitelformate auf dieselben Zeichensätze beschränkt.

8-Bit-Codes

Als 8-, 16- und 32-Bit -Computer (und später 64-Bit-Computer ) die 12- , 18- und 36-Bit- Computer als Standard ablösten , wurde es üblich, jedes Zeichen in einem 8-Bit-Byte im Speicher abzulegen. Dies ermöglichte die Entwicklung erweiterter, 8-Bit-Varianten des ASCII-Zeichensatzes. In den meisten Fällen entstanden diese als echte Erweiterungen von ASCII, wobei die ursprüngliche Zeichenzuordnung beibehalten, aber zusätzliche Zeichendefinitionen nach den ersten 128 (d. h. 7-Bit-)Zeichen hinzugefügt wurden. ASCII selbst blieb ein 7-Bit-Code: Der Begriff „erweitertes ASCII“ hat keinen offiziellen Status.

Für einige Länder wurden 8-Bit-Erweiterungen von ASCII entwickelt, die die Unterstützung von Zeichen für die jeweiligen Landessprachen beinhalten (zum Beispiel ISCII für Indien und VISCII für Vietnam).

Selbst in Märkten, in denen die Unterstützung zusätzlicher Sprachen durch viele weitere Zeichen nicht notwendig war, entwickelten Hersteller früher Heimcomputersysteme häufig eigene 8-Bit-Erweiterungen des ASCII-Zeichensatzes, um zusätzliche Zeichen wie Box-Drawing-Zeichen , Semigrafiken und Videospiel-Sprites einzubinden . Oftmals ersetzten diese Erweiterungen auch Steuerzeichen (Index 0 bis 31 sowie Index 127) durch noch plattformspezifischere Erweiterungen. In anderen Fällen wurde das zusätzliche Bit für andere Zwecke verwendet, beispielsweise zum Umschalten der Video-Inversion ; diesen Ansatz nutzte ATASCII , eine von Atari entwickelte Erweiterung des ASCII-Zeichensatzes .

Die meisten ASCII-Erweiterungen basieren auf ASCII-1967 (dem aktuellen Standard), einige jedoch auf dem älteren ASCII-1963. So basiert beispielsweise PETSCII , das von Commodore International für seine 8-Bit- Systeme entwickelt wurde , auf ASCII-1963. Auch viele Sharp-MZ-Zeichensätze basieren auf ASCII-1963.

IBM definierte die Codepage 437 für den IBM PC , wobei die Steuerzeichen durch grafische Symbole wie Smileys ersetzt und zusätzliche grafische Zeichen den oberen 128 Positionen zugeordnet wurden. [ 64 ] Die Digital Equipment Corporation entwickelte den Multinational Character Set (DEC-MCS) für das weit verbreitete Terminal VT220 als eine der ersten Erweiterungen, die eher für internationale Sprachen als für Blockgrafiken konzipiert waren. Apple definierte Mac OS Roman für den Macintosh und Adobe die PostScript Standard Encoding für PostScript ; beide Zeichensätze enthielten „internationale“ Buchstaben, typografische Symbole und Satzzeichen anstelle von Grafiken und ähnelten damit eher modernen Zeichensätzen.

Der ISO/IEC-8859 -Standard (abgeleitet vom DEC-MCS) diente als Grundlage für die meisten Systeme (oder basierte zumindest auf ihnen, wenn sie nicht exakt kopiert wurden). Eine von Microsoft entwickelte, weit verbreitete Erweiterung, Windows-1252 (oft fälschlicherweise als ISO-8859-1 bezeichnet ), fügte die für den traditionellen Textdruck benötigten typografischen Satzzeichen hinzu. ISO-8859-1, Windows-1252 und das ursprüngliche 7-Bit-ASCII waren bis 2008 die gängigsten Zeichenkodierungsverfahren im World Wide Web , bis sie von UTF-8 abgelöst wurden. [ 59 ]

ISO/IEC 4873 führte 32 zusätzliche Steuercodes im hexadezimalen Bereich 80–9F ein, um die 7-Bit-ASCII-Codierung auf ein 8-Bit-System zu erweitern. [ 65 ]

Unicode

Unicode und der ISO/IEC 10646 Universal Character Set (UCS) verfügen über einen wesentlich größeren Zeichensatz, und ihre verschiedenen Kodierungsformen haben ISO/IEC 8859 und ASCII in vielen Umgebungen rasch verdrängt. Während ASCII auf 128 Zeichen beschränkt ist, unterstützen Unicode und der UCS mehr Zeichen, indem sie die Konzepte der eindeutigen Identifizierung (mittels natürlicher Zahlen, sogenannter Codepunkte ) und der Kodierung (in 8-, 16- oder 32-Bit-Binärformate, genannt UTF-8 , UTF-16 bzw. UTF-32 ) trennen.

ASCII wurde als eines der ersten 128 Symbole in den Unicode-Zeichensatz (1991) aufgenommen, sodass die 7-Bit-ASCII-Zeichen in beiden Zeichensätzen dieselben numerischen Codes besitzen. Dadurch ist UTF-8 abwärtskompatibel zu 7-Bit-ASCII, da eine UTF-8-Datei, die ausschließlich ASCII-Zeichen enthält, identisch mit einer ASCII-Datei ist, die dieselbe Zeichenfolge enthält. Noch wichtiger ist die Aufwärtskompatibilität : Software, die nur 7-Bit-ASCII-Zeichen als Sonderzeichen erkennt und Bytes mit gesetztem höchstwertigen Bit nicht verändert (wie es häufig zur Unterstützung von 8-Bit-ASCII-Erweiterungen wie ISO-8859-1 geschieht), erhält die UTF-8-Daten unverändert. [ 66 ]

Siehe auch

Anmerkungen

  1. ^ a b c d eDie 128 Zeichen des 7-Bit-ASCII-Zeichensatzes sind in acht Gruppen mit je 16 Zeichen unterteilt , die als Sticks 0–7 bezeichnet werden und den drei höchstwertigen Bits zugeordnet sind . [ 13 ] Je nach horizontaler oder vertikaler Darstellung der Zeichentabelle können die Sticks entweder Tabellenzeilen oder -spalten entsprechen.
  2. Die Unicode-Zeichen im Bereich „Control Pictures“ (U+2400 bis U+2421) sind für die Darstellung von Steuerzeichen reserviert, wenn diese beim Drucken oder Anzeigen benötigt werden und nicht ihre eigentliche Funktion erfüllen sollen. Einige Browser stellen diese Zeichen möglicherweise nicht korrekt dar.
  3. Die Caret-Notation (^) wird häufig verwendet, um Steuerzeichen auf einem Terminal darzustellen. Auf den meisten Textterminalserzeugt das Gedrückthalten der Umschalttaste beim Eintippen des zweiten Zeichens das Steuerzeichen. Manchmal ist die Umschalttaste nicht erforderlich; beispielsweisekann die Eingabe auch mit Strg+2 oder Strg+Leertaste erfolgen.Ctrl^@
  4. ^ Escape-Sequenzen für Zeichen in der Programmiersprache C und vielen anderen davon beeinflussten Sprachen wie Java und Perl (wobei nicht alle Implementierungen notwendigerweise alle Escape-Sequenzen unterstützen).
  5. Die Eingabe eines beliebigen Einzelbyte-Zeichens wird durch Maskierung seines Oktalwerts unterstützt. Aufgrund der Rolle von NULL in C-Strings findet dieser Fall jedoch eine besondere Anwendung.
  6. ^ Das Rücktastezeichen kann auf einigen Systemenauch durch Drücken der Taste eingegeben werden← Backspace
  7. Die Mehrdeutigkeit der Rücktaste rührt daher , dass frühe Terminals davon ausgingen, dass die Tastatur hauptsächlich zum manuellen Lochen von Lochstreifen verwendet würde, ohne mit einem Computer verbunden zu sein. Um das vorherige Zeichen zu löschen, musste man den Lochstreifenstanzer zurücksetzen. Aus mechanischen und praktischen Gründen befand sich dazu eine Taste am Stanzer selbst und nicht auf der Tastatur. Anschließend musste man das Löschzeichen eingeben. Daher platzierte man eine Löschtaste an der Stelle, an der sich bei Schreibmaschinen die Rücktaste befand. Wenn Systeme diese Terminals nutzten und eine Kommandozeilenbearbeitung ermöglichten, mussten sie den Löschcode verwenden, um eine Rücktaste auszuführen, und interpretierten das Rücktastezeichen oft nicht (sie gaben beispielsweise " ^H " für Rücktaste aus). Andere Terminals, die nicht für Lochstreifen ausgelegt waren, ließen die Taste an dieser Stelle die Rücktaste auslösen, und Systeme, die für diese Terminals entwickelt wurden, verwendeten dieses Zeichen zum Zurücksetzen. Da der Löschcode oft einen Rücktaste-Effekt erzeugte, waren die Terminalhersteller gezwungen, jede Taste so zu belegen, dass sie etwas anderes als das Löschzeichen auslöste.Delete
  8. ^ Das Tabulatorzeichen kann auf den meisten Systemenauch durch Drücken der Taste eingegeben werdenTab ↹
  9. ^ Das Wagenrücklaufzeichen kann auf den meisten Systemenauch durch Drücken deroder↵ EnterReturn
  10. Die Escape-Sequenz \e ist nicht Bestandteil der ISO-C- Spezifikation und vieler anderer Sprachspezifikationen. Sie wird jedoch von mehreren Compilern, darunter GCC , verstanden .
  11. ^ Das Escape-Zeichen kann auf einigen Systemenauch durch Drücken der Taste eingegeben werdenEsc
  12. ^ ^^ bedeutet+(Drücken derTasten "Strg" und "Caret ").Ctrl^
  13. ^ Das Entf-Zeichen kann auf manchen Systemendurch Drücken der Entf-Taste eingegeben werden← Backspace
  14. ^ Ausgedruckt lauten die Zeichen:
     !"#$%&'()*+,-./0123456789:;<=>?​@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_​`abcdefghijklmnopqrstuvwxyz{|}~

Referenzen

  1. ^ ANSI (01.12.1975). ISO-IR-6: ASCII-Grafikzeichensatz (PDF) . ITSCJ/ IPSJ .
  2. ^ a b „Zeichensätze“ . Internet Assigned Numbers Authority (IANA) . 14.05.2007 . Abgerufen am 25.08.2019 .
  3. Mackenzie, Charles E. (1980). Coded Character Sets , History and Development (PDF) . The Systems Programming Series (1. Aufl.). Addison - Wesley Publishing Company , Inc. S. 6 , 66 , 211 , 215 , 217 , 220 , 223 , 228 , 236–238, 243–245 , 247–253 , 423, 425–428 , 435–439 . ISBN 978-0-201-14460-4LCCN  77-90165 . Archiviert (PDF) vom Original am 26. Mai 2016. Abgerufen am 25. August 2019 .
  4. ^ Shirley, R. (August 2007). Internet Security Glossary, Version 2. IETF . doi : 10.17487 /RFC4949 . RFC 4949. Abgerufen am 13. Juni 2016 .
  5. ^ Maini, Anil Kumar (2007). Digitalelektronik: Grundlagen, Bauelemente und Anwendungen . John Wiley and Sons . S. 28. ISBN 978-0-470-03214-5Darüber hinaus definiert es Codes für 33 nicht druckbare, größtenteils veraltete Steuerzeichen, die Einfluss auf die Textverarbeitung haben.
  6. ^ „Meilenstein-Vorschlag: ASCII-Meilenstein – IEEE NJ Coast Section“ . IEEE Milestones Wiki . 29.03.2016 . Abgerufen am 26.02.2024 .
  7. ^ a b Brandel, Mary (06.07.1999). „1963: Das Debüt von ASCII“ . CNN . Archiviert vom Original am 17.06.2013 . Abgerufen am 14.04.2008 .
  8. ^ a b c d „American Standard Code for Information Interchange, ASA X3.4-1963“ . Sensitive Research . American Standards Association . 17.06.1963 . Abgerufen am 06.06.2020 .
  9. ^ a b c USA Standard Code for Information Interchange, USAS X3.4-1967 (Technischer Bericht). United States of America Standards Institute . 1967-07-07.
  10. ^ Jennings, Thomas Daniel (20.04.2016) [1999]. „Eine kommentierte Geschichte einiger Zeichencodes oder ASCII: American Standard Code for Information Infiltration“ . Sensitive Research . Abgerufen am 08.03.2020 .
  11. ^ a b c d Amerikanischer Nationalstandard für Informationssysteme – Codierte Zeichensätze – 7-Bit-ASCII-Code (American National Standard Code for Information Interchange), ANSI X3.4-1986 (Technischer Bericht). American National Standards Institute (ANSI). 26.03.1986.
  12. ^ Bukstein, Ed (Juli 1964). „Binäre Computercodes und ASCII“ . Electronics World . 72 (1): 28–29 . Archiviert vom Original am 3. März 2016. Abgerufen am 22. Mai 2016 .
  13. ^ a b c d e f Bemer, Robert William (1980). „Kapitel 1: Inside ASCII“ (PDF) . Allgemeine Software . Best of Interface Age. Band 2. Portland, OR, USA: Dilithium Press. S.  1–50 . ISBN 978-0-918398-37-6LCCN  79-67462 . Archiviert vom Original am 27.08.2016 . Abgerufen am 27.08.2016 .aus:
  14. ^ Kurzbericht: Treffen der CCITT-Arbeitsgruppe zum neuen Telegrafenalphabet, 13.–15. Mai 1963.
  15. ^ Bericht des ISO/TC/97/SC 2 – Treffen vom 29. bis 31. Oktober 1963.
  16. ^ Bericht der Arbeitsgruppe X3.2.4, 11. Juni 1963, Pentagon-Gebäude, Washington, DC.
  17. ^ Bericht der Sitzung Nr. 8, Arbeitsgruppe X3.2.4, 17. und 18. Dezember 1963
  18. ^ a b c Winter, Dik T. (2010) [2003]. „US and International standards: ASCII“ . Archiviert vom Original am 16.01.2010.
  19. ^ a b USA Standard Code for Information Interchange, USAS X3.4-1968 (Technischer Bericht). United States of America Standards Institute . 1968-10-10.
  20. ^ a b c d e f g Salste, Tuomas (Januar 2016). „7-Bit-Zeichensätze: Revisionen von ASCII“ . Aivosto Oy. urn : nbn:fi-fe201201011004 . Archiviert vom Original am 13.06.2016 . Abgerufen am 13.06.2016 .
  21. ^ a b Cerf, Vint (1969-10-16). ASCII-Format für den Netzwerkaustausch . Network Working Group. doi : 10.17487/RFC0020 . RFC 20. Abgerufen am 13.06.2016 .(Anmerkung: Fast identischer Wortlaut wie in USAS X3.4-1968, außer in der Einleitung.)
  22. ^ Barry Leiba (12.01.2015). „Korrekte Klassifizierung von RFC 20 (ASCII-Format) als Internetstandard“ . IETF .
  23. ^ „Information“. Scientific American (Sonderausgabe). 215 (3). September 1966. JSTOR e24931041 . 
  24. ^ Korpela, Jukka K. (14.03.2014) [07.06.2006]. Unicode Explained – Internationalize Documents, Programs, and Web Sites (2. Auflage der 1. Auflage). O'Reilly Media, Inc. S. 118. ISBN 978-0-596-10121-3Die
  25. ^ ANSI INCITS 4-1986 (R2007): American National Standard for Information Systems – Coded Character Sets – 7-Bit American National Standard Code for Information Interchange (7-Bit ASCII) , 2007 [1986]
  26. ^ "INCITS 4-1986[R2012]: Information Systems - Coded Character Sets - 7-Bit American National Standard Code for Information Interchange (7-Bit ASCII)" . 15.06.2012. Archiviert vom Original am 28.02.2020 . Abgerufen am 28.02.2020 .
  27. ^ "INCITS 4-1986[R2017]: Information Systems - Coded Character Sets - 7-Bit American National Standard Code for Information Interchange (7-Bit ASCII)" . 2017-11-02 [2017-06-09]. Archiviert vom Original am 2020-02-28 . Abgerufen am 2020-02-28 .
  28. ^ „INCITS 4-1986 (R2022)“ . webstore.ansi.org .
  29. ^ Bitsequenzierung des amerikanischen nationalen Standardcodes für den Informationsaustausch bei serieller Bit-Datenübertragung , American National Standards Institute (ANSI), 1966, X3.15-1966
  30. ^ „Telegrafenverordnung und Schlussprotokoll (Madrid, 1932)“ (PDF) . Archiviert vom Original am 21.08.2023 . Abgerufen am 09.06.2024 .
  31. ^ a b Smith, Gil (2001). „Teletype Communication Codes“ (PDF) . Baudot.net. Archiviert (PDF) vom Original am 20.08.2008 . Abgerufen am 11.07.2008 .
  32. ^ Sawyer, Stanley A.; Krantz, Steven George (1995). A TeX Primer for Scientists . CRC Press . S. 13. Bibcode : 1995tps..book.....S . ISBN 978-0-8493-7159-2Archiviert vom Original am 22.12.2016 . Abgerufen am 29.10.2016 .
  33. ^ Savard, John JG „Computer Keyboards“ . Archiviert vom Original am 24.09.2014 . Abgerufen am 24.08.2014 .
  34. ^ „ASCIIbetical“ . PCMag Encyclopedia . Abgerufen am 23.06.2026 .
  35. ^ Resnick, Peter W., Hrsg. (April 2001). Internet Message Format . IETF . doi : 10.17487/RFC2822 . RFC 2822. Abgerufen am 13. Juni 2016 .(NB. NO-WS-CTL.)
  36. ^ McConnell, Robert; Haynes, James; Warren, Richard. „ASCII-Codes verstehen“ . Archiviert vom Original am 27.02.2014 . Abgerufen am 11.05.2014 .
  37. ^ Barry Margolin (29.05.2014). „Re: Geschichte von Editoren und Textverarbeitungsprogrammen (vorher: Re: RTF für Emacs)“ . help-gnu-emacs (Mailingliste). Archiviert vom Original am 14.07.2014 . Abgerufen am 11.07.2014 .
  38. ^ a b „PDP-6 Multiprogramming System Manual“ (PDF) . Digital Equipment Corporation (DEC). 1965. S. 43. Archiviert (PDF) vom Original am 14.07.2014 . Abgerufen am 10.07.2014 .
  39. ^ a b „PDP-10 Reference Handbook, Book 3, Communicating with the Monitor“ (PDF) . Digital Equipment Corporation (DEC). 1969. S. 5-5. Archiviert (PDF) vom Original am 15.11.2011 . Abgerufen am 10.07.2014 .
  40. ^ „Hilfe – GNU Emacs-Handbuch“ . Archiviert vom Original am 11.07.2018 . Abgerufen am 11.07.2018 .
  41. ^ "ANSI X3.64-1979" (PDF) . Abgerufen am 27.10.2024 .
  42. ^ Tim Paterson (08.08.2007). „Ist DOS eine Kopie von CP/M?“ DosMan Drivel . Archiviert vom Original am 20.04.2018 . Abgerufen am 19.04.2018 .
  43. Ossanna , JF ; Saltzer, JH (17.–19. November 1970). „Technische und ergonomische Probleme beim Anschluss von Terminals an ein Time-Sharing-System“ (PDF) . Proceedings der Fall Joint Computer Conference (FJCC) vom 17.–19. November 1970. AFIPS Press . S.  355–362 . Archiviert (PDF) vom Original am 19.08.2012 . Abgerufen am 29.01.2013 . Die Verwendung einer „Zeilenumbruch“-Funktion (Kombination aus Wagenrücklauf und Zeilenvorschub) ist für Mensch und Maschine einfacher als die separate Verwendung beider Funktionen zum Beginn einer neuen Zeile; der amerikanische Nationalstandard X3.4-1968 erlaubt, dass der Zeilenvorschubcode die Bedeutung eines Zeilenumbruchs enthält.
  44. ^ O'Sullivan, T. (1971-05-19). TELNET-Protokoll . Internet Engineering Task Force (IETF). S. 4–5. doi : 10.17487/RFC0158 . RFC 158. Abgerufen am 28.01.2013 .
  45. ^ Neigus, Nancy J. (12.08.1973). File Transfer Protocol . Internet Engineering Task Force (IETF). doi : 10.17487/RFC0542 . RFC 542. Abgerufen am 28.01.2013 .
  46. ^ Postel, Jon (Juni 1980). File Transfer Protocol . Internet Engineering Task Force (IETF). doi : 10.17487/RFC0765 . RFC 765. Abgerufen am 28. Januar 2013 .
  47. ^ Crocker, David (13.08.1982). STANDARD FÜR DAS FORMAT VON ARPA-INTERNET-TEXTNACHRICHTEN . Internet Engineering Task Force (IETF). doi : 10.17487/RFC0822 . RFC 822 .
  48. ^ Berners-Lee, Tim; et al. (Mai 1996). Hypertext Transfer Protocol -- HTTP/1.0 . Internet Engineering Task Force (IETF). doi : 10.17487/RFC1945 . RFC 1945 .
  49. ^ „EOL-Übersetzungsplan für Mercurial“ . Mercurial. Archiviert vom Original am 16.06.2016 . Abgerufen am 24.06.2017 .
  50. ^ Bernstein, Daniel J. „Bare LFs in SMTP“ . Archiviert vom Original am 29.10.2011 . Abgerufen am 28.01.2013 .
  51. ^ CP/M 1.4 Interface Guide (PDF) . Digital Research . 1978. S. 10. Archiviert (PDF) vom Original am 29.05.2019 . Abgerufen am 07.10.2017 .
  52. ^ Haynes, Jim (13.01.2015). „Aus erster Hand: Chad ist unser wichtigstes Produkt: Erinnerungen eines Ingenieurs an die Teletype Corporation“ . Engineering and Technology History Wiki (ETHW) . Abgerufen am 14.02.2023 . Es gab die Umstellung von ASCII 1961 auf ASCII 1968. Einige Programmiersprachen verwendeten Zeichen aus ASCII 1961, wie zum Beispiel den Pfeil nach oben und den Pfeil nach links. Diese Zeichen verschwanden mit ASCII 1968. Wir arbeiteten mit Fred Mocking, der inzwischen im Vertrieb bei Teletype tätig war , an einem Typenzylinder, der die sich ändernden Zeichen so auffangen sollte, dass die Bedeutungen von ASCII 1961 nicht vollständig verloren gingen. Der Unterstrich wurde keilförmig gestaltet, sodass er auch als Pfeil nach links verwendet werden konnte.
  53. ^ Bemer, Robert William . „Bemer trifft Europa (Computerstandards) – Computergeschichtliche Vignetten“ . Trailing-edge.com. Archiviert vom Original am 17.10.2013 . Abgerufen am 14.04.2008 .(Anmerkung: Bemer war zu dieser Zeit bei IBM angestellt .)
  54. ^ „Robert William Bemer: Biografie“ . 09.03.2013. Archiviert vom Original am 16.06.2016.
  55. ^ Johnson, Lyndon Baines (11.03.1968). „Memorandum zur Genehmigung der Einführung eines Standardcodes für den Informationsaustausch durch die Bundesregierung“ . The American Presidency Project. Archiviert vom Original am 14.09.2007 . Abgerufen am 14.04.2008 .
  56. ^ Richard S. Shuford (20.12.1996). „Re: Frühe Geschichte von ASCII?“ . Newsgroup :  alt.folklore.computers . Usenet: Pine.SUN.3.91.961220100220.13180C-100000@duncan.cs.utk.edu . 
  57. Folts , Harold C.; Karp, Harry (Hrsg.). (1982-02-01). Compilation of Data Communications Standards (2. überarbeitete Auflage). McGraw-Hill Inc. ISBN 978-0-07-021457-6Die
  58. ^ Dubost, Karl (06.05.2008). „UTF-8 Growth on the Web“ . W3C Blog . World Wide Web Consortium . Archiviert vom Original am 16.06.2016 . Abgerufen am 15.08.2010 .
  59. ^ a b Davis, Mark (05.05.2008). „Umstellung auf Unicode 5.1“ . Offizieller Google-Blog . Archiviert vom Original am 16.06.2016 . Abgerufen am 15.08.2010 .
  60. ^ Davis, Mark (28.01.2010). „Unicode nähert sich 50 % des Webs“ . Offizieller Google-Blog . Archiviert vom Original am 16.06.2016 . Abgerufen am 15.08.2010 .
  61. ^ „Spezifische Kriterien“, Anlage zum Memo von RW Reach, „X3-2-Treffen – 14. und 15. September“, 18. September 1961
  62. ^ Maréchal, R. (22.12.1967), ISO/TC 97 – Computer und Informationsverarbeitung: Annahme des Entwurfs der ISO-Empfehlung Nr. 1052
  63. ^ "DVB-TXT (Teletext) Spezifikation für die Übertragung von ITU-R System B Teletext in DVB-Bitströmen" .
  64. ^ Technische Referenz (PDF) . Referenzbibliothek für Personal Computer Hardware (Erste Auflage). IBM. August 1981. Anhang C. Zeichen, Tastenanschläge und Farben.
  65. ^ Das Unicode-Konsortium (27.10.2006). „Kapitel 13: Sonderbereiche und Formatzeichen“ (PDF) . In: Allen, Julie D. (Hrsg.). Der Unicode-Standard, Version 5.0 . Upper Saddle River, New Jersey, USA: Addison-Wesley Professional . S. 314. ISBN 978-0-321-48091-0Archiviert ( PDF) vom Original am 09.10.2022 . Abgerufen am 13.03.2015 .
  66. ^ „utf-8(7) – Linux-Handbuchseite“ . Man7.org. 26.02.2014. Archiviert vom Original am 22.04.2014 . Abgerufen am 21.04.2014 .

Weiterführende Literatur