ASCII- ASCII

ASCII
USASCII-Codetabelle.png
ASCII-Diagramm aus einem Druckerhandbuch vor 1972
MIME / IANA uns-ascii
Alias(e) ISO-IR-006, ANSI_X3.4-1968, ANSI_X3.4-1986, ISO_646.irv:1991, ISO646-US, us, IBM367, cp367
Sprachen) Englisch
Einstufung ISO 646-Serie
Erweiterungen
Vorangestellt ITA 2 , FIELDATA
gefolgt von ISO 8859 , Unicode

ASCII ( / æ s k i / ( hören ) Über diesen Ton ASS -kee ), aus abgekürzt American Standard Code für Informationsaustausch , ist ein Zeichencodierungsstandard für die elektronische Kommunikation. ASCII-Codes repräsentieren Text in Computern, Telekommunikationsgeräten und anderen Geräten. Die meisten modernen Zeichencodierungsschemata basieren auf ASCII, obwohl sie viele zusätzliche Zeichen unterstützen.

Die Internet Assigned Numbers Authority (IANA) bevorzugt für diese Zeichenkodierung den Namen US-ASCII .

ASCII ist einer der IEEE-Meilensteine .

Überblick

ASCII wurde aus dem Telegrafencode entwickelt . Seine erste kommerzielle Verwendung war ein 7- Bit- Fernschreibercode , der von Bell-Datendiensten gefördert wurde. Die Arbeit am ASCII-Standard begann im Mai 1961 mit der ersten Sitzung des Unterausschusses X3.2 der American Standards Association (ASA) (jetzt American National Standards Institute oder ANSI). Die erste Ausgabe des Standards wurde 1963 veröffentlicht, 1967 einer größeren Überarbeitung unterzogen und 1986 zuletzt aktualisiert ) von Listen und zusätzlichen Funktionen für andere Geräte als Fernschreiber.

Die Verwendung des ASCII-Formats für Network Interchange wurde 1969 beschrieben. Dieses Dokument wurde 2015 offiziell zu einem Internet-Standard erhoben.

Ursprünglich auf dem englischen Alphabet basierend , codiert ASCII 128 angegebene Zeichen in Sieben-Bit-Ganzzahlen, wie in der obigen ASCII-Tabelle gezeigt. Fünfundneunzig der codierten Zeichen sind druckbar: Dazu gehören die Ziffern 0 bis 9 , Kleinbuchstaben a bis z , Großbuchstaben A bis Z und Satzzeichen . Darüber hinaus enthielt die ursprüngliche ASCII-Spezifikation 33 nicht druckbare Steuercodes, die von Fernschreibmaschinen stammten ; die meisten davon sind mittlerweile veraltet, obwohl einige immer noch häufig verwendet werden, z. B. Wagenrücklauf , Zeilenvorschub und Tabulatorcodes .

Zum Beispiel würde das Kleinbuchstabe i in der ASCII-Codierung durch binäres 1101001 = hexadezimal 69 ( i ist der neunte Buchstabe) = dezimal 105 dargestellt.

Geschichte

ASCII (1963). Kontrollbilder von äquivalenten Kontrollen werden angezeigt, wo sie vorhanden sind, oder andernfalls ein grauer Punkt.

Der American Standard Code for Information Interchange (ASCII) wurde unter der Schirmherrschaft eines Ausschusses der American Standards Association (ASA), genannt X3-Ausschuss, von dessen Unterausschuss X3.2 (später X3L2) und später von dessen Unterausschuss X3 entwickelt. 2.4 Arbeitsgruppe (jetzt INCITS ). Aus der ASA wurde das United States of America Standards Institute (USASI) und schließlich das American National Standards Institute (ANSI).

Mit den anderen ausgefüllten Sonderzeichen und Steuercodes wurde ASCII als ASA X3.4-1963 veröffentlicht, wobei 28 Codepositionen ohne zugewiesene Bedeutung für zukünftige Standardisierungen und ein nicht zugewiesener Steuercode übrig blieben. Es gab damals einige Diskussionen, ob es mehr Steuerzeichen als das Kleinbuchstaben-Alphabet geben sollte. Die Unentschlossenheit dauerte nicht lange: Im Mai 1963 schlug die CCITT-Arbeitsgruppe zum Neuen Telegraphenalphabet vor, den Sticks 6 und 7 Kleinbuchstaben zuzuweisen , und die International Organization for Standardization TC 97 SC 2 stimmte im Oktober dafür, die Änderung in ihren Standardentwurf aufzunehmen . Die X3.2.4-Arbeitsgruppe stimmte auf ihrer Sitzung im Mai 1963 dem Wechsel zu ASCII zu. Das Auffinden der Kleinbuchstaben in den Sticks 6 und 7 führte dazu, dass sich die Zeichen im Bitmuster um ein einzelnes Bit vom Großbuchstaben unterschieden, was die Groß-/Kleinschreibung bei der Zeichenübereinstimmung und den Bau von Tastaturen und Druckern vereinfachte .

Das X3-Komitee nahm andere Änderungen vor, darunter andere neue Zeichen (die geschweiften und vertikalen Strichzeichen ), die Umbenennung einiger Steuerzeichen (SOM wurde zum Anfang des Headers (SOH)) und das Verschieben oder Entfernen anderer (RU wurde entfernt). ASCII wurde anschließend als USAS X3.4-1967, dann USAS X3.4-1968, ANSI X3.4-1977 und schließlich ANSI X3.4-1986 aktualisiert.

Revisionen des ASCII-Standards:

  • ASA X3.4-1963
  • ASA X3.4-1965 (zugelassen, aber nicht veröffentlicht, dennoch verwendet von IBM 2260 & 2265 Display Stations und IBM 2848 Display Control)
  • USAS X3.4-1967
  • USAS X3.4-1968
  • ANSI X3.4-1977
  • ANSI X3.4-1986
  • ANSI X3.4-1986 (R1992)
  • ANSI X3.4-1986 (R1997)
  • ANSI INCITS 4-1986 (R2002)
  • ANSI INCITS 4-1986 (R2007)
  • (ANSI) INCITS 4-1986[R2012]
  • (ANSI) INCITS 4-1986[R2017]

Im X3.15-Standard befasste sich das X3-Komitee auch damit, wie ASCII übertragen werden sollte ( niedrigstwertiges Bit zuerst) und wie es auf perforiertem Band aufgezeichnet werden sollte. Sie schlugen einen 9-Spur- Standard für Magnetbänder vor und versuchten, mit einigen Lochkartenformaten umzugehen .

Überlegungen zum Entwurf

Bitbreite

Der X3.2-Unterausschuss entwarf ASCII basierend auf den früheren Fernschreiber-Codierungssystemen. Wie andere Zeichenkodierungen spezifiziert ASCII eine Entsprechung zwischen digitalen Bitmustern und Zeichensymbolen (dh Graphemen und Steuerzeichen ). Dies ermöglicht es digitalen Geräten, miteinander zu kommunizieren und zeichenorientierte Informationen wie etwa geschriebene Sprache zu verarbeiten, zu speichern und zu kommunizieren. Vor der Entwicklung von ASCII umfassten die verwendeten Kodierungen 26 alphabetische Zeichen, 10 numerische Ziffern und 11 bis 25 spezielle grafische Symbole. Um alle diese zu schließen und Steuerzeichen kompatibel mit dem Comité Consultatif Internationale Téléphonique et Télégraphique (CCITT) Internationale Telegraph Alphabet No. 2 (ITA2) Standard 1924, Fieldata (1956), und Anfang EBCDIC (1963), mehr als 64 Codes waren für ASCII erforderlich.

ITA2 wiederum basierte auf dem 5-Bit-Telegrafencode, den Émile Baudot 1870 erfand und 1874 patentieren ließ.

Der Ausschuss diskutierte die Möglichkeit einer Verschiebefunktion (wie in ITA2 ), die mehr als 64 - Codes erlauben würde , durch A dargestellt werden Sechs-Bit - Code . In einem verschobenen Code bestimmen einige Zeichencodes die Auswahl zwischen Optionen für die folgenden Zeichencodes. Es ermöglicht eine kompakte Codierung, ist jedoch für die Datenübertragung weniger zuverlässig , da ein Fehler bei der Übertragung des Schiebecodes typischerweise einen langen Teil der Übertragung unlesbar macht. Der Normenausschuss entschied sich gegen das Verschieben, weshalb ASCII mindestens einen 7-Bit-Code erforderte.

Das Komitee zog einen Acht-Bit-Code in Betracht, da acht Bits ( Oktette ) es zwei Vier-Bit-Mustern ermöglichen würden, zwei Ziffern mit binär codierten Dezimalzahlen effizient zu codieren . Es würde jedoch erfordern, dass die gesamte Datenübertragung acht Bits sendet, wenn sieben ausreichen könnten. Das Komitee stimmte für die Verwendung eines 7-Bit-Codes, um die mit der Datenübertragung verbundenen Kosten zu minimieren. Da ein perforiertes Band zu dieser Zeit acht Bits an einer Position aufzeichnen konnte, ermöglichte es auf Wunsch auch ein Paritätsbit zur Fehlerprüfung . Acht-Bit- Maschinen (mit Oktetten als nativem Datentyp), die keine Paritätsprüfung verwendeten, setzen das achte Bit normalerweise auf 0.

Interne Organisation

Der Code selbst wurde so gemustert, dass die meisten Steuercodes zusammen und alle Grafikcodes zusammen waren, um die Identifizierung zu erleichtern. Die ersten beiden sogenannten ASCII-Sticks (32 Positionen) waren für Steuerzeichen reserviert. Das "Leerzeichen" musste vor Grafiken stehen, um das Sortieren zu erleichtern, also wurde es Position 20 hex ; Aus dem gleichen Grund wurden viele Sonderzeichen, die üblicherweise als Trennzeichen verwendet werden, vor Ziffern gesetzt. Das Komitee entschied, dass es wichtig sei, 64-Zeichen- Großbuchstaben zu unterstützen , und entschied sich für ASCII-Muster, damit es leicht auf einen verwendbaren 64-Zeichen-Satz von Grafikcodes reduziert werden konnte, wie es im DEC SIXBIT- Code (1963) der Fall war . Kleinbuchstaben wurden daher nicht mit Großbuchstaben verschachtelt. Um Optionen für Kleinbuchstaben und andere Grafiken zu erhalten, wurden die Sonder- und Zahlencodes vor den Buchstaben angeordnet und der Buchstabe A an Position 41 hex platziert , um dem Entwurf der entsprechenden britischen Norm zu entsprechen. Den Ziffern 0–9 wird 011 vorangestellt, aber die verbleibenden 4 Bits entsprechen ihren jeweiligen Werten in binärer Form, was die Umwandlung mit binärcodierten Dezimalzahlen einfach macht.

Viele der nicht-alphanumerischen Zeichen wurden so positioniert, dass sie ihrer verschobenen Position auf Schreibmaschinen entsprechen; eine wichtige Feinheit ist, dass diese auf mechanischen Schreibmaschinen basierten , nicht auf elektrischen Schreibmaschinen. Mechanische Schreibmaschinen folgten dem Standard der Remington No. 2 (1878), der ersten Schreibmaschine mit einer Shift-Taste, und die verschobenen Werte 23456789-waren "#$%_&'() – frühe Schreibmaschinen ließen 0 und 1 weg , mit O (Großbuchstabe o ) und l (Kleinbuchstabe .) L ) statt, aber 1!und 0)Paare wurden Standard, sobald 0 und 1 üblich wurden. So wurden in ASCII !"#$%im zweiten Stick die Positionen 1–5 platziert, entsprechend den Ziffern 1–5 im benachbarten Stick. Die Klammern konnten jedoch nicht 9 und 0 entsprechen , da die 0 entsprechende Stelle durch das Leerzeichen eingenommen wurde. Dies wurde durch Entfernen _(Unterstrich) von 6 und Verschieben der restlichen Zeichen berücksichtigt, was vielen europäischen Schreibmaschinen entsprach, die die Klammern mit 8 und 9 setzten . Diese Diskrepanz von Schreibmaschinen führte zu Bit-gepaarten Tastaturen , insbesondere dem Teletype Model 33 , das das nach links verschobene Layout entsprechend ASCII verwendete, nicht zu traditionellen mechanischen Schreibmaschinen. Elektrische Schreibmaschinen, insbesondere die IBM Selectric (1961), verwendeten ein etwas anderes Layout, das bei Computern zum Standard geworden ist – nach dem IBM PC (1981), insbesondere dem Modell M (1984) – und daher stimmen die Verschiebungswerte für Symbole auf modernen Tastaturen nicht überein so nah an der ASCII-Tabelle wie frühere Tastaturen. Das /?Paar stammt auch aus der Nr. 2, und die ,< .>Paare wurden auf einigen Tastaturen verwendet (andere, einschließlich der Nr. 2, wurden nicht verschoben ,(Komma) oder .(Punkt), sodass sie in Großbuchstaben verwendet werden konnten, ohne die Verschiebung aufzuheben). ASCII teilte jedoch das ;:Paar (datiert auf Nr. 2) und ordnete mathematische Symbole (verschiedene Konventionen, allgemein -* =+) in neu an :* ;+ -=.

Einige gebräuchliche Zeichen wurden nicht aufgenommen, insbesondere ½¼¢, während ^`~sie als diakritische Zeichen für den internationalen Gebrauch und <>für den mathematischen Gebrauch zusammen mit den einfachen Linienzeichen \|(zusätzlich zu den gebräuchlichen /) aufgenommen wurden. Das @ Symbol wurde nicht in Kontinentaleuropa verwendet und die Ausschuss erwartet , dass es durch eine akzentuierte ersetzt werden würde À in der Französisch - Variante, so dass die @ in Position 40 platziert wurde hex , direkt vor dem Buchstaben A.

Die für die Datenübertragung als wesentlich erachteten Kontrollcodes waren Nachrichtenanfang (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 positioniert, um den Hamming-Abstand zwischen ihren Bitmustern zu maximieren .

Zeichenreihenfolge

Die ASCII-Code-Reihenfolge wird auch als ASCIIbetical- Reihenfolge bezeichnet. Das Zusammenstellen von Daten erfolgt manchmal in dieser Reihenfolge statt in der "Standard"-alphabetischen Reihenfolge ( Zusammentragsreihenfolge ). Die Hauptabweichungen in der ASCII-Reihenfolge sind:

  • Alle Großbuchstaben kommen vor Kleinbuchstaben; zum Beispiel steht "Z" vor "a"
  • Ziffern und viele Satzzeichen stehen vor Buchstaben

Eine Zwischenreihenfolge wandelt Großbuchstaben in Kleinbuchstaben um, bevor ASCII-Werte verglichen werden.

Zeichengruppen

Steuerzeichen

ASCII reserviert die ersten 32 Codes (Zahlen 0–31 dezimal) für Steuerzeichen : Codes, die ursprünglich nicht dazu gedacht waren, druckbare Informationen darzustellen, sondern um Geräte (wie Drucker ) zu steuern , die ASCII verwenden, oder um Metainformationen über Daten bereitzustellen Streams, wie sie auf Magnetbändern gespeichert sind.

Zum Beispiel repräsentiert das Zeichen 10 die "Zeilenvorschub"-Funktion (die einen Drucker veranlasst, sein Papier vorzuschieben), und das Zeichen 8 repräsentiert die "Rücktaste". RFC  2822 bezieht sich auf Steuerzeichen, die weder Wagenrücklauf, Zeilenvorschub oder Leerzeichen enthalten, als Steuerzeichen, die keine Leerzeichen sind. Außer den Steuerzeichen, die eine elementare zeilenorientierte Formatierung vorschreiben, definiert ASCII keinen Mechanismus, um die Struktur oder das Aussehen von Text innerhalb eines Dokuments zu beschreiben. Andere Schemata, wie Auszeichnungssprachen , Adressseiten- und Dokumentlayout und -formatierung.

Der ursprüngliche ASCII-Standard verwendete nur kurze beschreibende Phrasen für jedes Steuerzeichen. Die dadurch verursachte Mehrdeutigkeit war manchmal beabsichtigt, zum Beispiel wenn ein Zeichen auf einer Terminalverbindung etwas anders verwendet wurde als auf einem Datenstrom , und manchmal zufällig, zum Beispiel mit der Bedeutung von "Löschen".

Das wahrscheinlich einflussreichste Einzelgerät bei der Interpretation dieser Zeichen war das Teletype Model 33 ASR, ein Druckterminal mit einer verfügbaren Papierstreifenlese- /Lochoption. Papierband war bis in die 1980er Jahre ein sehr beliebtes Medium für die langfristige Programmspeicherung, weniger kostspielig und in gewisser Weise weniger zerbrechlich als Magnetband. Insbesondere die Maschinenzuordnungen des Teletype Model 33 für die Codes 17 (Control-Q, DC1, auch bekannt als XON), 19 (Control-S, DC3, auch bekannt als XOFF) und 127 ( Delete ) wurden zu De-facto-Standards. Das Modell 33 zeichnete sich auch dadurch aus, dass die Beschreibung von Control-G (Code 7, BEL, was bedeutet, den Bediener akustisch alarmieren) wörtlich zu nehmen, da das Gerät eine echte Glocke enthielt, die es läutete, wenn es ein BEL-Zeichen erhielt. Da der Tastenkopf für die O-Taste auch ein Pfeilsymbol nach links zeigte (von ASCII-1963, das dieses Zeichen anstelle des Unterstrichs hatte ), wurde eine nicht konforme Verwendung von Code 15 (Strg-O, Shift In) als "Vorheriges Zeichen löschen" interpretiert. wurde auch von vielen frühen Timesharing-Systemen übernommen, aber schließlich vernachlässigt.

Wenn ein Teletype 33 ASR, der mit dem automatischen Papierstreifenleser ausgestattet war, ein Control-S (XOFF, eine Abkürzung für Senden aus) empfing, führte dies zum Stoppen des Bandlesers; Das Empfangen von Control-Q (XON, "Senden ein") führte dazu, dass der Bandleser wieder aufgenommen wurde. Diese Technik wurde von mehreren frühen Computerbetriebssystemen als "Handshake"-Signal übernommen, das einen Sender warnt, die Übertragung wegen eines bevorstehenden Überlaufs zu stoppen; es besteht bis heute in vielen Systemen als manuelle Ausgabesteuerungstechnik. Auf einigen Systemen behält Control-S seine Bedeutung, aber Control-Q wird durch ein zweites Control-S ersetzt, um die Ausgabe wieder aufzunehmen. Der 33 ASR könnte auch so konfiguriert werden, dass er Control-R (DC2) und Control-T (DC4) zum Starten und Stoppen des Bandstanzens verwendet; bei einigen Geräten, die mit dieser Funktion ausgestattet sind, war der entsprechende Steuerzeichen-Schriftzug auf der Tastenkappe über dem Buchstaben TAPE bzw. TAPE .

Löschen & Rücktaste

Der Teletype konnte den Kopf nicht nach hinten bewegen, also legte er keine Taste auf die Tastatur, um ein BS (Backspace) zu senden. Stattdessen war ein Schlüssel markiert RUB OUT, der den Code 127 (DEL) sendete. Der Zweck dieser Taste war es, Fehler in einem handgeschriebenen Papierband zu löschen: Der Bediener musste einen Knopf am Lochstreifen drücken, um es zu sichern, dann den Rubout eingeben, der alle Löcher stanzte und den Fehler durch ein Zeichen ersetzte, das sollte ignoriert werden. Fernschreiber wurden häufig für die weniger teuren Computer von Digital Equipment Corporation verwendet , so dass diese Systeme den verfügbaren Schlüssel und damit den DEL-Code verwenden mussten, um das vorherige Zeichen zu löschen. Aus diesem Grund sendeten DEC-Videoterminals (standardmäßig) den DEL-Code für die mit "Backspace" gekennzeichnete Taste, während die mit "Delete" gekennzeichnete Taste eine Escape-Sequenz sendete, während viele andere Terminals BS für die Backspace-Taste sendeten. Der Unix-Terminaltreiber konnte nur einen Code verwenden, um das vorherige Zeichen zu löschen, dieser konnte auf BS oder DEL gesetzt werden, aber nicht beides, was zu einer langen Zeit des Ärgers führte, in der Benutzer ihn je nach verwendetem Terminal korrigieren mussten (Shells die eine Zeilenbearbeitung ermöglichen, wie ksh , bash und zsh , beide verstehen). Die Annahme, dass kein Schlüssel eine BS sendete, führte dazu, dass Strg+H für andere Zwecke verwendet wurde, wie zum Beispiel den Präfix-Befehl "help" in GNU Emacs .

Fliehen

Viele weitere Steuercodes haben ganz andere Bedeutungen als ihre ursprünglichen. Das "Escape"-Zeichen (ESC, Code 27) beispielsweise sollte ursprünglich das Senden anderer Steuerzeichen als Literale ermöglichen, anstatt ihre Bedeutung aufzurufen. Dies ist die gleiche Bedeutung von "Escape", die in URL-Codierungen, C-Sprachstrings und anderen Systemen angetroffen wird, in denen bestimmte Zeichen eine reservierte Bedeutung haben. Im Laufe der Zeit wurde diese Bedeutung übernommen und schließlich geändert. Im modernen Gebrauch zeigt ein an das Terminal gesendeter ESC normalerweise den Beginn einer Befehlssequenz in der Regel in Form eines sogenannten „ ANSI-Escape-Codes “ (oder richtiger eines „ Control Sequence Introducer “) von ECMA-48 ( 1972) und seine Nachfolger, beginnend mit ESC gefolgt von einem "[" (linke Klammer) Zeichen. Ein ESC gesendet von dem Terminal wird am häufigsten verwendet , als Out-of-Band - Zeichen verwendet , um eine Operation zu beenden, wie in den TABG und vi Texteditoren . In grafischer Benutzeroberfläche (GUI) und Windowing - Systemen, ESC verursacht im Allgemeinen eine Anwendung ihre aktuelle Operation abzubrechen oder zu Ausfahrt (beenden) insgesamt.

Ende der Linie

Die inhärente Mehrdeutigkeit vieler Steuerzeichen in Verbindung mit ihrer historischen Verwendung führte zu Problemen bei der Übertragung von "Klartext"-Dateien zwischen Systemen. Das beste Beispiel dafür ist das Newline- Problem auf verschiedenen Betriebssystemen . Fernschreibmaschinen erforderten, dass eine Textzeile sowohl mit "Wagenrücklauf" (der den Druckkopf an den Anfang der Zeile bewegt) als auch mit "Zeilenvorschub" (der das Papier eine Zeile weiterbewegt, ohne den Druckkopf zu bewegen) beendet werden. Der Name " Wagenrücklauf " kommt von der Tatsache, dass bei einer manuellen Schreibmaschine der Wagen, der das Papier hielt, sich bewegte, während die Position, an der die Typenleisten auf das Farbband trafen, stationär blieb. Der gesamte Wagen musste nach rechts geschoben (zurückgestellt) werden, um den linken Papierrand für die nächste Zeile zu positionieren.

DEC- Betriebssysteme ( OS/8 , RT-11 , RSX-11 , RSTS , TOPS-10 usw.) verwendeten beide Zeichen, um das Ende einer Zeile zu markieren, damit das Konsolengerät (ursprünglich Teletype-Maschinen ) funktionieren würde. Als sogenannte "Glass TTYs" (später CRTs oder Terminals genannt) aufkamen, war die Konvention so gut etabliert, dass die Abwärtskompatibilität eine Fortsetzung der Konvention erforderlich machte. Wenn Gary Kildall erstellt CP / M er von einigen Befehlszeilenschnittstelle Konventionen in inspiriert Dezember ‚s RT-11 . Bis zur Einführung von PC-DOS im Jahr 1981 war IBM daran nicht beteiligt, da ihre 1970er-Jahre-Betriebssysteme EBCDIC statt ASCII verwendeten und auf Lochkarteneingabe und Zeilendruckerausgabe ausgerichtet waren, bei denen das Konzept des Wagenrücklaufs bedeutungslos war. IBMs PC-DOS ( von Microsoft auch als MS-DOS vermarktet ) hat die Konvention geerbt, da es lose auf CP/M basiert, und Windows hat es von MS-DOS geerbt.

Leider führt das Erfordernis von zwei Zeichen, das Ende einer Zeile zu markieren, zu unnötiger Komplexität und zu Fragen, wie jedes Zeichen zu interpretieren ist, wenn es allein angetroffen wird. Zur Vereinfachung verwendet Multics Klartext- Datenströme, einschließlich Dateien, nur als Zeilenabschluss. Unix und Unix-ähnliche Systeme sowie Amiga- Systeme haben diese Konvention von Multics übernommen. Das ursprüngliche Macintosh OS , Apple DOS und ProDOS hingegen verwendeten Carriage Return (CR) allein als Zeilenabschluss; Da Apple diese Betriebssysteme jedoch durch das Unix-basierte macOS- Betriebssystem ersetzt hat, verwenden sie jetzt auch Zeilenvorschub (LF). Der Radio Shack TRS-80 verwendet auch ein einzelnes CR, um Leitungen zu terminieren.

Zu den an das ARPANET angeschlossenen Computern gehörten Maschinen mit Betriebssystemen wie TOPS-10 und TENEX mit CR-LF-Zeilenenden, Maschinen mit Betriebssystemen wie Multics mit LF-Zeilenenden und Maschinen mit Betriebssystemen wie OS/360 , die Zeilen wie eine Zeichenanzahl gefolgt von den Zeichen der Zeile, die EBCDIC anstelle von ASCII verwendet. Das Telnet- Protokoll definierte ein ASCII " Network Virtual Terminal " (NVT), so dass Verbindungen zwischen Hosts mit unterschiedlichen Zeilenende-Konventionen und Zeichensätzen unterstützt werden konnten, indem ein Standardtextformat über das Netzwerk übertragen wurde. Telnet verwendet ASCII zusammen mit CR-LF-Zeilenenden, und Software, die andere Konventionen verwendet, übersetzt zwischen den lokalen Konventionen und dem NVT. Das File Transfer Protocol hat das Telnet-Protokoll, einschließlich der Verwendung des Network Virtual Terminal, für die Übertragung von Befehlen und die Übertragung von Daten im Standard-ASCII-Modus übernommen. Dies erhöht die Komplexität der Implementierungen dieser Protokolle und anderer Netzwerkprotokolle, wie beispielsweise denen, die für E-Mail und das World Wide Web verwendet werden, auf Systemen, die nicht die CR-LF-Zeilenendkonvention des NVT verwenden.

Ende der Datei/des Streams

Der PDP-6-Monitor und sein PDP-10-Nachfolger TOPS-10 verwendeten Control-Z (SUB) als Dateiende-Anzeige für Eingaben von einem Terminal. Einige Betriebssysteme wie CP/M verfolgten die Dateilänge nur in Einheiten von Plattenblöcken und verwendeten Control-Z, um das Ende des eigentlichen Textes in der Datei zu markieren. Aus diesen Gründen wurde EOF oder Dateiende umgangssprachlich und konventionell als dreibuchstabiges Akronym für Control-Z anstelle von SUBstitute verwendet. Der End-of-Text-Code ( ETX ), auch bekannt als Control-C , war aus verschiedenen Gründen ungeeignet, während die Verwendung von Z als Steuercode zum Beenden einer Datei analog zum Ende des Alphabets ist und als sehr praktisch dient Gedächtnisstütze . Eine historisch übliche und immer noch vorherrschende Konvention verwendet die ETX-Codekonvention, um ein Programm über einen Eingabedatenstrom, normalerweise von einer Tastatur, zu unterbrechen und anzuhalten.

In der C-Bibliothek und Unix- Konventionen wird das Nullzeichen verwendet, um Textstrings zu beenden ; solche nullterminierten Strings können abgekürzt als ASCIZ oder ASCIIZ bekannt sein, wobei hier Z für "Null" steht.

Steuercodetabelle

Binär Okt Dezember Verhexen Abkürzung Name (1967)
1963 1965 1967
000 0000 000 0 00 NULL NUL ^@ \0 Null
000 0001 001 1 01 SO M SOH ^A Beginn der Überschrift
000 0010 002 2 02 EOA STX ^B Textanfang
000 0011 003 3 03 EOM ETX ^C Ende des Textes
000 0100 004 4 04 EOT ^D Ende der Übertragung
000 0101 005 5 05 WRU DEQ ^E Anfrage
000 0110 006 6 06 RU ACK ^F Wissen
000 0111 007 7 07 KLINGEL BEL ^G \ein Klingel
000 1000 010 8 08 FE0 BS ^H \B Rücktaste
000 1001 011 9 09 HT/SK HT ^Ich \T Horizontale Registerkarte
000 1010 012 10 0A LF ^J \n Zeilenvorschub
000 1011 013 11 0B VTAB VT ^K \v Vertikale Registerkarte
000 1100 014 12 0C FF ^L \F Formular-Feed
000 1101 015 13 0D CR ^M \R Wagenrücklauf
000 1110 016 14 0E SO ^Nein Shift Out
000 1111 017 fünfzehn 0F SI ^O Umschalten
001 0000 020 16 10 DC0 DLE ^P Flucht aus der Datenverbindung
001 0001 021 17 11 DC1 ^Q Gerätesteuerung 1 (oft XON )
001 0010 022 18 12 DC2 ^R Gerätesteuerung 2
001 0011 023 19 13 DC3 ^S Gerätesteuerung 3 (oft XOFF )
001 0100 024 20 14 DC4 ^T Gerätesteuerung 4
001 0101 025 21 fünfzehn IRREN NAK ^U Negative Bestätigung
001 0110 026 22 16 SYNCHRONISIEREN SYN ^V Synchroner Leerlauf
001 0111 027 23 17 LEM ETB ^W Ende des Übertragungsblocks
001 1000 030 24 18 S0 KANN ^X Abbrechen
001 1001 031 25 19 S1 EM ^Y Ende des Mediums
001 1010 032 26 1A S2 SS SUB ^Z Ersatz
001 1011 033 27 1B S3 ESC ^[ \e Fliehen
001 1100 034 28 1C S4 FS ^\ Dateitrennzeichen
001 1101 035 29 1D S5 GS ^] Gruppentrenner
001 1110 036 30 1E S6 RS ^^ Datensatztrenner
001 1111 037 31 1F S7 uns ^_ Einheitentrenner
111 1111 177 127 7F DEL ^? Löschen

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

Druckbare Zeichen

Die Codes 20 hex bis 7E hex , die als druckbare Zeichen bekannt sind, stehen für Buchstaben, Ziffern, Satzzeichen und einige verschiedene Symbole. Es gibt insgesamt 95 druckbare Zeichen.

Code 20 hex , das "Leerzeichen" , bezeichnet den Abstand zwischen Wörtern, wie er durch die Leertaste einer Tastatur erzeugt wird. Da das Leerzeichen als unsichtbare Grafik (und nicht als Steuerzeichen) gilt, ist es in der folgenden Tabelle statt im vorherigen Abschnitt aufgeführt.

Code 7F hex entspricht dem nicht druckbaren Steuerzeichen "Löschen" (DEL) und wird daher in dieser Tabelle weggelassen; es wird in der Tabelle des vorherigen Abschnitts behandelt. Frühere ASCII-Versionen verwendeten den Aufwärtspfeil anstelle des Einfügezeichens (5E hex ) und den Linkspfeil anstelle des Unterstrichs (5F hex ).

Binär Okt Dezember Verhexen Glyphe
1963 1965 1967
010 0000 040 32 20  Platz
010 0001 041 33 21 !
010 0010 042 34 22 "
010 0011 043 35 23 #
010 0100 044 36 24 $
010 0101 045 37 25 %
010 0110 046 38 26 &
010 0111 047 39 27 '
010 1000 050 40 28 (
010 1001 051 41 29 )
010 1010 052 42 2A *
010 1011 053 43 2B +
010 1100 054 44 2C ,
010 1101 055 45 2D -
010 1110 056 46 2E .
010 1111 057 47 2F /
011 0000 060 48 30 0
011 0001 061 49 31 1
011 0010 062 50 32 2
011 0011 063 51 33 3
011 0100 064 52 34 4
011 0101 065 53 35 5
011 0110 066 54 36 6
011 0111 067 55 37 7
011 1000 070 56 38 8
011 1001 071 57 39 9
011 1010 072 58 3A :
011 1011 073 59 3B ;
011 1100 074 60 3C <
011 1101 075 61 3D =
011 1110 076 62 3E >
011 1111 077 63 3F ?
100 0000 100 64 40 @ ` @
100 0001 101 65 41 EIN
100 0010 102 66 42 B
100 0011 103 67 43 C
100 0100 104 68 44 D
100 0101 105 69 45 E
100 0110 106 70 46 F
100 0111 107 71 47 g
100 1000 110 72 48 h
100 1001 111 73 49 ich
100 1010 112 74 4A J
100 1011 113 75 4B K
100 1100 114 76 4C L
100 1101 115 77 4D m
100 1110 116 78 4E n
100 1111 117 79 4F Ö
101 0000 120 80 50 P
101 0001 121 81 51 Q
101 0010 122 82 52 R
101 0011 123 83 53 S
101 0100 124 84 54 T
101 0101 125 85 55 U
101 0110 126 86 56 V
101 0111 127 87 57 W
101 1000 130 88 58 x
101 1001 131 89 59 Ja
101 1010 132 90 5A Z
101 1011 133 91 5B [
101 1100 134 92 5C \ ~ \
101 1101 135 93 5D ]
101 1110 136 94 5E ^
101 1111 137 95 5F _
110 0000 140 96 60 @ `
110 0001 141 97 61 ein
110 0010 142 98 62 B
110 0011 143 99 63 C
110 0100 144 100 64 D
110 0101 145 101 65 e
110 0110 146 102 66 F
110 0111 147 103 67 g
110 1000 150 104 68 h
110 1001 151 105 69 ich
110 1010 152 106 6A J
110 1011 153 107 6B k
110 1100 154 108 6C l
110 1101 155 109 6D m
110 1110 156 110 6E n
110 1111 157 111 6F Ö
111 0000 160 112 70 P
111 0001 161 113 71 Q
111 0010 162 114 72 R
111 0011 163 115 73 S
111 0100 164 116 74 T
111 0101 165 117 75 du
111 0110 166 118 76 v
111 0111 167 119 77 w
111 1000 170 120 78 x
111 1001 171 121 79 ja
111 1010 172 122 7A z
111 1011 173 123 7B {
111 1100 174 124 7C ACK ¬ |
111 1101 175 125 7D }
111 1110 176 126 7E ESC | ~

Zeichensatz

Punkte, die in früheren Versionen (der Version von 1963 oder dem Entwurf von 1965) einen anderen Charakter darstellten, sind eingerahmt dargestellt. Punkte, die seit der Version von 1963 zugewiesen wurden, aber ansonsten unverändert waren, werden relativ zu ihren Legendenfarben leicht schattiert angezeigt.

ASCII (1977/1986)
_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _EIN _B _C _D _E _F
0_
0
NUL
0000
SOH
0001
STX
0002
ETX
0003
EOT
0004
ENQ
0005
ACK
0006
BEL
0007
BS
0008
HT
0009
LF
000A
VT
000B
FF
000C
CR
000D
SO
000E
SI
000F
1_
16
DLE
0010
DC1
0011
DC2
0012
DC3
0013
DC4
0014
NAK
0015
SYN
0016
ETB
0017
CAN
0018
EM
0019
SUB
001A
ESC
001B
FS
001C
GS
001D
RS
001E
US
001F
2_
32
SP
0020
!
0021
"
0022
#
0023
0024 $
%
0025
&
0026
'
0027
(
0028
)
0029
*
002A
+
002B
,
002C
-
002D
.
002E
/
002F
3_
48
0
0030
1
0031
2
0032
3
0033
4
0034
5
0035
6
0036
7
0037
8
0038
9
0039
:
003A
;
003B
<
003C
=
003D
>
003E
?
003F
4_
64
@
0040
A
0041
B
0042
C
0043
D
0044
E
0045
F
0046
G
0047
H
0048
Ich
0049
J
004A
K
004B
L
004C
M
004D
N
004E
O
004F
5_
80
P
0050
Q
0051
R
0052
S
0053
T
0054
U
0055
V
0056
W
0057
X
0058
Y
0059
Z
005A
[
005B
\
005C
]
005D
^
005E
_
005F
6_
96
`
0060
ein
0061
b
0062
c
0063
d
0064
e
0065
f
0066
g
0067
h
0068
ich
0069
j
006A
k
006B
l
006C
m
006D
n
006E
o
006F
7_
112
p
0070
q
0071
r
0072
s
0073
t
0074
u
0075
v
0076
w
0077
x
0078
y
0079
z
007A
{
007B
|
007C
}
007D
~
007E
DEL
007F

  Brief  Nummer  Interpunktion  Symbol  Sonstiges  Nicht definiert  Charakter geändert von Version 1963 oder Entwurf von 1965

Verwenden

ASCII wurde erstmals 1963 kommerziell als 7-Bit-Fernschreibercode für das TWX-Netzwerk (TeletypeWriter eXchange) von American Telephone & Telegraph verwendet . TWX verwendete ursprünglich das frühere Fünf-Bit- ITA2 , das auch vom konkurrierenden Telex- Fernschreibersystem verwendet wurde. Bob Bemer führte Funktionen wie die Escape-Sequenz ein . Sein britischer Kollege Hugh McGregor Ross hat dazu beigetragen, dieses Werk zu popularisieren – laut Bemer „so sehr, dass der Code, der zu ASCII werden sollte, in Europa zuerst als Bemer-Ross-Code bezeichnet wurde“. Wegen seiner umfangreichen Arbeiten zu ASCII wurde Bemer als "Vater von ASCII" bezeichnet.

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

Ich habe auch Empfehlungen des Handelsministers [ Luther H. Hodges ] bezüglich Standards für die Aufzeichnung des Standardcodes für den Informationsaustausch auf Magnetbändern und Papierbändern bei deren Verwendung im Computerbetrieb genehmigt . Alle Computer und zugehörige Gerätekonfigurationen, die ab dem 1. Juli 1969 in das Inventar der Bundesregierung aufgenommen werden, müssen bei der Verwendung dieser Medien den Standardcode für den Informationsaustausch und die von den Magnetband- und Papierbandnormen vorgeschriebenen Formate verwenden können.

ASCII war bis Dezember 2007 die gebräuchlichste Zeichencodierung im World Wide Web , als die UTF-8- Codierung sie übertraf; UTF-8 ist abwärtskompatibel mit ASCII.

Varianten und Ableitungen

Als sich die Computertechnologie auf der ganzen Welt verbreitete, entwickelten verschiedene Normungsgremien und Unternehmen viele Variationen von ASCII, um den Ausdruck nicht-englischer Sprachen zu erleichtern, die lateinische Alphabete verwendeten. Man könnte einige dieser Variationen als " ASCII-Erweiterungen " klassifizieren , obwohl einige diesen Begriff missbrauchen, um alle Varianten darzustellen, einschließlich derer, die ASCII-Zeichentabelle nicht im 7-Bit-Bereich beibehalten. Außerdem wurden die ASCII-Erweiterungen auch fälschlicherweise als ASCII bezeichnet.

7-Bit-Codes

ASCII war von Beginn seiner Entwicklung an nur als eine von mehreren nationalen Varianten eines internationalen Zeichencode-Standards gedacht.

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

Viele andere Länder haben ASCII-Varianten entwickelt, die nicht-englische Buchstaben (zB é , ñ , ß , Ł ), Währungssymbole (zB £ , ¥ ) usw. enthalten. Siehe auch YUSCII (Jugoslawien).

Es würde die meisten Zeichen gemeinsam haben, aber anderen Codepunkten, die für die "nationale Verwendung" reserviert sind , andere lokal nützliche Zeichen zuweisen . Die vier Jahre, die zwischen der Veröffentlichung von ASCII-1963 und der ersten Annahme einer internationalen Empfehlung durch ISO im Jahr 1967 vergingen, ließen jedoch die Auswahl von ASCII für die nationalen Zeichen als De-facto-Standards für die Welt erscheinen, was zu Verwirrung und Inkompatibilität führte, sobald andere Länder begannen, diese Codepunkte selbst zuzuordnen.

ISO/IEC 646 ist wie ASCII ein 7-Bit-Zeichensatz. Es stellt keine zusätzlichen Codes zur Verfügung, so dass die gleichen Codepunkte unterschiedliche Zeichen in verschiedenen Ländern codierten. Escape-Codes wurden definiert, um anzugeben, welche nationale Variante auf einen Text zutrifft, sie wurden jedoch selten verwendet, so dass es oft unmöglich war, zu wissen, mit welcher Variante gearbeitet werden sollte und daher, welches Zeichen ein Code repräsentierte, und im Allgemeinen Text- Verarbeitungssysteme könnten ohnehin nur eine Variante bewältigen.

Da die Klammer- und geschweiften Zeichen von ASCII Codepunkten "nationaler Verwendung" zugewiesen wurden, die in anderen nationalen Varianten von ISO/IEC 646 für Buchstaben mit Akzent verwendet wurden, verwendet ein deutscher, französischer oder schwedischer usw. Programmierer ihre nationale Variante von ISO /IEC 646 musste anstelle von ASCII etwas schreiben und somit lesen wie

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

Anstatt von

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

C-Trigraphen wurden erstellt, um dieses Problem für ANSI C zu lösen , obwohl ihre späte Einführung und inkonsistente Implementierung in Compilern ihre Verwendung einschränkten. Viele Programmierer hielten ihre Computer auf US-ASCII, so dass Klartext in Schwedisch, Deutsch usw. (zum Beispiel in E-Mail oder Usenet ) "{, }" und ähnliche Varianten zwischen Wörtern enthielt, etwas, das diese Programmierer bekamen gewöhnt an. Zum Beispiel, ein schwedischer Programmierer, der einen anderen Programmierer mailt und fragt, ob er zum Mittagessen gehen soll, könnte "N{ jag har sm|rg}sar" als Antwort erhalten, was "Nä jag har smörgåsar" sein sollte, was "Nein, ich habe Sandwiches".

In Japan und Korea wird noch ab den 2020er Jahren eine ASCII-Variante verwendet, bei der der umgekehrte Schrägstrich (5C hex) als ¥ (ein Yen-Zeichen in Japan) oder ₩ (ein Won-Zeichen in Korea) wiedergegeben wird. Das bedeutet, dass beispielsweise der Dateipfad C:\Users\Smith als C:¥Users¥Smith (in Japan) oder C:₩Users₩Smith (in Korea) angezeigt wird.

8-Bit-Codes

Als 8-, 16- und 32-Bit- (und später 64-Bit- ) Computer begannen, 12- , 18- und 36-Bit- Computer als Norm zu ersetzen , wurde es üblich, jeweils ein 8-Bit-Byte zu verwenden Zeichen im Speicher, was eine Möglichkeit für erweiterte 8-Bit-Verwandte von ASCII bietet. In den meisten Fällen entwickelten sich diese als echte Erweiterungen von ASCII, wobei die ursprüngliche Zeichenzuordnung intakt blieb, aber zusätzliche Zeichendefinitionen nach den ersten 128 (dh 7-Bit) Zeichen hinzugefügt wurden.

Kodierungen umfassen ISCII (Indien), VISCII (Vietnam). Obwohl diese Kodierungen manchmal als ASCII bezeichnet werden, wird echtes ASCII ausschließlich durch den ANSI-Standard definiert.

Die meisten frühen Heimcomputersysteme entwickelten ihre eigenen 8-Bit-Zeichensätze, die Strichzeichnungen und Spielglyphen enthielten, und füllten oft einige oder alle Steuerzeichen von 0 bis 31 mit mehr Grafiken aus. Kaypro CP/M- Computer verwendeten die "oberen" 128 Zeichen für das griechische Alphabet.

Der PETSCII- Code, der von Commodore International für seine 8-Bit- Systeme verwendet wird, ist wahrscheinlich einzigartig unter den Codes nach 1970, da er auf ASCII-1963 basiert, anstatt auf dem üblicheren ASCII-1967, wie er auf dem ZX Spectrum- Computer zu finden ist. Atari 8-Bit-Computer und Galaksija- Computer verwendeten ebenfalls ASCII-Varianten.

Der IBM PC definierte die Codepage 437 , die die Steuerzeichen durch grafische Symbole wie Smileys ersetzte und zusätzliche grafische Zeichen auf die oberen 128 Positionen abbildete. Betriebssysteme wie DOS unterstützten diese Codepages, und Hersteller von IBM-PCs unterstützten sie in Hardware. Als eine der ersten Erweiterungen, die mehr für internationale Sprachen als für Blockgrafiken konzipiert wurden, hat die Digital Equipment Corporation den Multinational Character Set (DEC-MCS) für den Einsatz im beliebten VT220- Terminal entwickelt . Der Macintosh definierte Mac OS Roman und Postscript definierte auch einen Satz, beide enthielten sowohl internationale Buchstaben als auch typografische Satzzeichen anstelle von Grafiken, eher wie moderne Zeichensätze.

Der ISO/IEC 8859- Standard (abgeleitet vom DEC-MCS) lieferte schließlich einen Standard, den die meisten Systeme kopierten (mindestens so genau wie ASCII kopiert, aber mit vielen Substitutionen). Eine beliebte weitere Erweiterung von Microsoft, Windows-1252 (oft fälschlicherweise als ISO-8859-1 bezeichnet ), fügte die typografischen Satzzeichen hinzu, die für den traditionellen Textdruck benötigt werden. ISO-8859-1, Windows-1252 und das ursprüngliche 7-Bit-ASCII waren die gebräuchlichsten Zeichenkodierungen bis 2008, als UTF-8 häufiger wurde.

ISO/IEC 4873 führte 32 zusätzliche Steuercodes ein, die im hexadezimalen Bereich von 80–9F definiert sind, als Teil der Erweiterung der 7-Bit-ASCII-Codierung zu einem 8-Bit-System.

Unicode

Unicode und der ISO/IEC 10646 Universal Character Set (UCS) haben eine viel breitere Palette von Zeichen und ihre verschiedenen Kodierungsformen haben begonnen, ISO/IEC 8859 und ASCII in vielen Umgebungen schnell zu verdrängen. Während ASCII auf 128 Zeichen beschränkt ist, unterstützen Unicode und UCS mehr Zeichen, indem sie die Konzepte der eindeutigen Identifizierung (unter Verwendung natürlicher Zahlen, die als Codepunkte bezeichnet werden ) und der Kodierung (in 8-, 16- oder 32-Bit-Binärformaten, genannt UTF-8 ) trennen , UTF-16 und UTF-32 ).

ASCII wurde als die ersten 128 Zeichen in den Unicode-Zeichensatz (1991) aufgenommen, sodass die 7-Bit-ASCII-Zeichen in beiden Sätzen dieselben numerischen Codes haben. Dies ermöglicht UTF-8 werden rückwärts kompatibel mit 7-Bit - ASCII, wie eine UTF-8 - Datei nur ASCII - Zeichen enthält , in eine ASCII - Datei identisch ist , die gleiche Abfolge von Zeichen enthält. Noch wichtiger ist, dass die Aufwärtskompatibilität gewährleistet ist, da eine Software nur 7-Bit-ASCII-Zeichen als Sonderzeichen erkennt und Bytes mit dem höchsten Bitsatz nicht verändert (wie es oft getan wird, um 8-Bit-ASCII-Erweiterungen wie ISO-8859-1) zu unterstützen. behält die UTF-8-Daten unverändert bei.

Siehe auch

Anmerkungen

Verweise

Weiterlesen

Externe Links