Erweiterte ASCII- Extended ASCII

Ausgabe des Programms ASCII in Cygwin

Erweiterten ASCII ( EASCII oder hohe ASCII ) Zeichencodierungen sind Acht-Bit oder größer Codierungen, die die Standard - sieben- umfassen Bit ASCII Zeichen sowie zusätzliche Zeichen. Die alleinige Verwendung des Begriffs "erweitertes ASCII" wird manchmal kritisiert, da er fälschlicherweise so interpretiert werden kann, dass der ASCII-Standard auf mehr als 128 Zeichen aktualisiert wurde oder dass der Begriff eindeutig eine einzelne Kodierung identifiziert, die beide nicht der Fall.

Es gibt viele erweiterte ASCII-Kodierungen (mehr als 220 DOS- und Windows-Codepages). EBCDIC ("der andere" große 8-Bit-Zeichencode) hat im Laufe der Jahrzehnte ebenfalls viele erweiterte Varianten (mehr als 186 EBCDIC-Codepages) entwickelt.

Geschichte

ASCII wurde in den 1960er Jahren für Fernschreiber und Telegrafie und einige Computer entwickelt. Frühe Fernschreiber waren elektromechanisch, hatten keinen Mikroprozessor und gerade genug elektromechanischen Speicher, um zu funktionieren. Sie verarbeiteten jeweils ein Zeichen vollständig und kehrten unmittelbar danach in einen Ruhezustand zurück; dies bedeutete, dass alle Kontrollsequenzen nur ein Zeichen lang sein mussten und somit eine große Anzahl von Codes für solche Kontrollen reserviert werden mussten. Sie waren von Schreibmaschinen abgeleitete Schlagdrucker und konnten nur einen festen Satz von Glyphen drucken, die in ein oder mehrere Metallelemente gegossen wurden; dies förderte auch eine Mindestmenge an Glyphen.

Sieben-Bit-ASCII wurde gegenüber früheren Fünf- und Sechs-Bit-Codes verbessert. Von den 2 7 = 128 Codes wurden 33 für Kontrollen und 95 sorgfältig ausgewählte druckbare Zeichen (94 Glyphen und ein Leerzeichen) verwendet, die das englische Alphabet (Groß- und Kleinbuchstaben), Ziffern und 31 Satzzeichen und Symbole enthalten: alle von die Symbole auf einer Standard-US-Schreibmaschine sowie einige ausgewählte für Programmieraufgaben. Einige gängige Peripheriegeräte implementierten nur eine Teilmenge von 64 Zeichen: Teletype Model 33 konnte nicht "a" bis "z" oder fünf weniger gebräuchliche Symbole ("`", "{", "|", "}" und . übertragen "~"). und wenn sie solche Zeichen erhielten, druckten sie stattdessen "A" bis "Z" (erzwungene Großbuchstaben ) und fünf andere meist ähnliche Symbole ("@", "[", "\", "]" und "^") .

Der ASCII-Zeichensatz ist für US-Englisch kaum groß genug und es fehlen viele im Satz übliche Glyphen und für den universellen Einsatz viel zu klein. Viele weitere Buchstaben und Symbole sind wünschenswert, nützlich oder erforderlich, um Buchstaben anderer Alphabete als Englisch direkt darzustellen, mehr Arten von Satzzeichen und Abständen, mehr mathematische Operatoren und Symbole (× ÷ ⋅ ≠ ≥ ≈ π usw.), einige einzigartige Symbole werden verwendet durch einige Programmiersprachen, Ideogramme , Logogramme , Box-Drawing-Zeichen usw. Jahrelang wurden Anwendungen um den 64-Zeichensatz und/oder den 95-Zeichensatz herum entwickelt, so dass einige Zeichen neue Verwendungszwecke erhielten. ASCII fehlt beispielsweise "÷", daher verwenden die meisten Programmiersprachen "/", um eine Division anzuzeigen.

Das größte Problem für Computerbenutzer auf der ganzen Welt waren andere Alphabete. Das englische Alphabet von ASCII passt fast zu europäischen Sprachen, wenn Buchstaben mit Akzent durch Buchstaben ohne Akzent oder Annäherungen mit zwei Zeichen ersetzt werden. Modifizierte Varianten von 7-Bit-ASCII erschienen prompt und tauschten einige weniger verwendete Symbole gegen begehrte Symbole oder Buchstaben ein, wie z. B. das Ersetzen von "#" durch "£" auf britischen Fernschreibern, "\" durch "¥" in Japan oder "₩" in Korea usw. Es ergaben sich mindestens 29 Variantensätze. 12 Codepunkte wurden durch mindestens einen modifizierten Satz modifiziert, so dass nur 82 "invariante" Codes übrig blieben . Programmiersprachen hatten jedoch vielen der ersetzten Zeichen eine Bedeutung zugewiesen, es wurden Umgehungslösungen wie C -Dreizeichenfolgen "??(" und "??)" entwickelt, um "{" und "}" darzustellen. Sprachen mit unterschiedlichen Grundalphabeten könnten eine Transliteration verwenden, z. B. das Ersetzen aller lateinischen Buchstaben durch die am besten passenden kyrillischen Buchstaben (was zu einem seltsamen, aber etwas lesbaren Text führt, wenn Englisch in kyrillischer Schrift gedruckt wurde oder umgekehrt). Es wurden auch Schemata entwickelt, damit zwei Buchstaben überdruckt werden können (oft mit der Rücktaste dazwischen), um Buchstaben mit Akzent zu erzeugen. Benutzer fühlten sich mit keinem dieser Kompromisse wohl und wurden oft schlecht unterstützt.

Als Computer und Peripheriegeräte in den 1970er Jahren auf 8-Bit- Bytes standardisiert wurden , wurde offensichtlich, dass Computer und Software Text mit 256-Zeichensätzen fast ohne zusätzliche Kosten für die Programmierung und ohne zusätzliche Kosten für die Speicherung verarbeiten konnten. (Angenommen, das ungenutzte 8. Bit jedes Bytes wurde nicht in irgendeiner Weise wiederverwendet, wie z. B. Fehlerprüfung, Boolesche Felder oder Packen von 8 Zeichen in 7 Bytes.) Dies würde es ermöglichen, ASCII unverändert zu verwenden und 128 zusätzliche Zeichen bereitzustellen. Viele Hersteller haben 8-Bit-Zeichensätze entwickelt, die aus ASCII plus bis zu 128 der nicht verwendeten Codes bestehen. Da Osteuropa zu dieser Zeit politisch getrennt war, konnten oft 8-Bit-Kodierungen vorgenommen werden, die alle gebräuchlichen europäischen (und lateinamerikanischen) Sprachen wie Dänisch, Niederländisch, Französisch, Deutsch, Portugiesisch, Spanisch, Schwedisch und mehr abdeckten "lateinisch" oder "römisch" genannt.

128 zusätzliche Zeichen reichen immer noch nicht aus, um alle Zwecke, alle Sprachen oder sogar alle europäischen Sprachen abzudecken, so dass die Entstehung vieler proprietärer und nationaler ASCII-abgeleiteter 8-Bit-Zeichensätze unvermeidlich war. Das Übersetzen zwischen diesen Sets ( Transcoding ) ist komplex (insbesondere wenn ein Zeichen nicht in beiden Sets enthalten ist); und wurde oft nicht gemacht, wodurch Mojibake (semi-lesbarer resultierender Text, oft von Benutzern gelernt, wie man ihn manuell dekodiert) produziert wurde. In den späten 1990er Jahren gab es schließlich Versuche zur Zusammenarbeit oder Koordination durch nationale und internationale Normungsgremien, aber die Herstellung proprietärer Sets blieb bei weitem am beliebtesten, vor allem weil die Normen viele beliebte Charaktere ausschlossen.

Proprietäre Erweiterungen

Verschiedene proprietäre Modifikationen und Erweiterungen von ASCII erschienen auf Nicht- EBCDIC- Großrechnern und Minicomputern , insbesondere in Universitäten.

Hewlett-Packard begann um 1978/1979 damit , seinem erweiterten 7-Bit / 8-Bit-ASCII-Zeichensatz HP Roman Extension europäische Zeichen für die Verwendung mit seinen Workstations, Terminals und Druckern hinzuzufügen . Daraus entwickelten sich später die weit verbreiteten regulären 8-Bit-Zeichensätze HP Roman-8 und HP Roman-9 (sowie eine Reihe von Varianten).

Atari- und Commodore -Heimcomputer fügten ihrem nicht standardmäßigen ASCII viele grafische Symbole hinzu (bzw. ATASCII und PETSCII , basierend auf dem ursprünglichen ASCII-Standard von 1963).

Der TRS-80-Zeichensatz für den TRS-80 -Heimcomputer fügte 64 Semigraphics- Zeichen (0x80 bis 0xBF) hinzu, die Blockgrafiken mit niedriger Auflösung implementierten. (Jedes Blockgrafikzeichen wird als 2x3-Pixelraster angezeigt, wobei jedes Blockpixel effektiv von einem der unteren 6 Bits gesteuert wird.)

IBM führte erweiterte 8-Bit-ASCII-Codes auf dem ursprünglichen IBM-PC ein und produzierte später Variationen für verschiedene Sprachen und Kulturen. IBM nannte solche Zeichensätze Codepages und ordnete sowohl denen, die sie selbst erfunden haben, als auch vielen, die von anderen Herstellern erfunden und verwendet wurden, Nummern zu. Dementsprechend werden Zeichensätze sehr oft durch ihre IBM-Codepage-Nummer angegeben. In ASCII-kompatiblen Codepages behielten die unteren 128 Zeichen ihre Standard-US-ASCII-Werte bei, und verschiedene Seiten (oder Zeichensätze) konnten in den oberen 128 Zeichen verfügbar gemacht werden. DOS- Computer, die für den nordamerikanischen Markt gebaut wurden, verwendeten beispielsweise die Codepage 437 , die Akzentzeichen für Französisch, Deutsch und einige andere europäische Sprachen sowie einige grafische Strichzeichen enthielt. Der größere Zeichensatz machte es möglich, Dokumente in einer Kombination von Sprachen wie Englisch und Französisch zu erstellen (obwohl französische Computer normalerweise die Codepage 850 verwenden ), jedoch nicht beispielsweise in Englisch und Griechisch (wofür die Codepage 737 erforderlich war ).

Apple Computer führte in Mac OS eigene erweiterte 8-Bit-ASCII-Codes ein , wie zum Beispiel Mac OS Roman . Der Apple LaserWriter führte auch den Postscript-Zeichensatz ein .

Die Digital Equipment Corporation (DEC) entwickelte den multinationalen Zeichensatz , der weniger Zeichen, aber mehr Buchstaben- und diakritische Kombinationen hatte. Es wurde von den Computerterminals VT220 und später DEC unterstützt . Dies wurde später die Grundlage für andere Zeichensätze wie den Lotus International Character Set (LICS), ECMA-94 und ISO 8859-1 .

ISO 8859 und proprietäre Anpassungen

Schließlich veröffentlichte ISO diesen Standard als ISO 8859 , der seinen eigenen Satz von 8-Bit-ASCII-Erweiterungen beschreibt. Am beliebtesten ist ISO 8859-1 , auch ISO Latin 1 genannt , das ausreichend Zeichen für die gängigsten westeuropäischen Sprachen enthielt. Auch für andere Sprachen wurden Varianten genormt: ISO 8859-2 für osteuropäische Sprachen und ISO 8859-5 für kyrillische Sprachen zum Beispiel.

Ein bemerkenswerter Unterschied zwischen ISO-Zeichensätzen und Codepages besteht darin, dass die Zeichenpositionen 128 bis 159, die ASCII- Steuerzeichen mit dem höherwertigen Bitsatz entsprechen, in den ISO-Standards ausdrücklich ungenutzt und undefiniert sind, obwohl sie oft verwendet wurden für druckbare Zeichen in proprietären Codepages, eine fast universelle Verletzung von ISO-Standards.

Microsoft erstellte später die Codepage 1252 , eine kompatible Obermenge von ISO 8859-1 mit zusätzlichen Zeichen im nicht verwendeten ISO-Bereich. Codepage 1252 ist die Standardzeichencodierung westeuropäischer Sprachversionen von Microsoft Windows , einschließlich englischer Versionen. ISO 8859-1 ist die gängige 8-Bit-Zeichencodierung, die vom X Window System verwendet wird , und die meisten Internetstandards verwendeten sie vor Unicode .

Zeichensatzverwirrung

Die Bedeutung jedes erweiterten Codepunktes kann bei jeder Codierung unterschiedlich sein. Um Textdaten (Zeichenfolgen), die erweiterte Codes enthalten, korrekt zu interpretieren und anzuzeigen, muss die Hardware und Software, die den Text liest oder empfängt, die spezifische erweiterte ASCII-Codierung verwenden, die für sie gilt. Das Anwenden der falschen Codierung führt zu einer irrationalen Ersetzung vieler oder aller erweiterten Zeichen im Text.

Die Software kann eine feste Kodierungsauswahl verwenden oder aus einer Palette von Kodierungen standardmäßig auswählen, die Länder- und Spracheinstellungen des Computers überprüfen, eine Erklärung im Text lesen, den Text analysieren , den Benutzer fragen, den Benutzer auswählen oder überschreiben lassen, und/oder Vorgabe zur letzten Auswahl. Wenn Text zwischen Computern übertragen wird, die unterschiedliche Betriebssysteme, Software und Codierungen verwenden, kann es an der Tagesordnung sein, die falsche Codierung anzuwenden.

Da das vollständige englische Alphabet und die am häufigsten verwendeten Zeichen in Englisch in den Sieben-Bit-Codepunkten von ASCII enthalten sind, die allen Kodierungen (sogar den meisten proprietären Kodierungen) gemeinsam sind, wird englischsprachiger Text durch die Interpretation mit dem . weniger beschädigt falsche Kodierung, aber Text in anderen Sprachen kann als Mojibake angezeigt werden (kompletter Unsinn). Da viele Internetstandards ISO 8859-1 verwenden und Microsoft Windows (unter Verwendung der Codepage 1252 Obermenge von ISO 8859-1) das heute dominierende Betriebssystem für PCs ist, ist die unangekündigte Verwendung von ISO 8859-1 durchaus üblich und kann grundsätzlich angenommen werden, es sei denn, es liegen andere Hinweise vor.

Viele Kommunikationsprotokolle , allen voran SMTP und HTTP , erfordern, dass die Zeichencodierung von Inhalten mit von der IANA zugewiesenen Zeichensatzkennungen gekennzeichnet wird.

Multi-Byte-Zeichenkodierungen

Einige Multi-Byte-Zeichenkodierungen (Zeichenkodierungen, die mehr als 256 verschiedene Zeichen verarbeiten können) sind auch echtes erweitertes ASCII. Das bedeutet, dass alle ASCII-Zeichen mit einem einzigen Byte mit dem gleichen Wert wie ASCII kodiert sind und diese Werte nirgendwo anders verwendet werden. Sie können in Dateiformaten verwendet werden, in denen nur ASCII-Bytes für Schlüsselwörter und Dateiformatsyntax verwendet werden, während Bytes 0x80-0xFF für freien Text verwendet werden können, einschließlich der meisten Programmiersprachen, in denen Sprachschlüsselwörter, Variablennamen und Funktionsnamen enthalten sein müssen ASCII, aber Zeichenfolgenkonstanten und Kommentare können Nicht-ASCII-Zeichen verwenden. Dies macht es viel einfacher, einen Multi-Byte-Zeichensatz in bestehende Systeme einzuführen, die erweitertes ASCII verwenden.

UTF-8 ist echtes Extended ASCII, ebenso wie einige Extended Unix Code- Kodierungen.

ISO/IEC 6937 ist kein erweitertes ASCII, da sein Codepunkt 0x24 eher dem allgemeinen Währungszeichen (¤) als dem Dollarzeichen ($) entspricht, ansonsten jedoch, wenn Sie die Akzent-Buchstaben-Paare als erweitertes Zeichen gefolgt von betrachten die ASCII-Version.

Shift JIS ist kein echtes erweitertes ASCII. Neben dem Ersetzen des umgekehrten Schrägstrichs durch das Yen- Zeichen können Multibyte-Zeichen auch ASCII-Bytes enthalten. Es vermeidet die Verwendung von ASCII-Trennzeichen und -Steuerelementen, sodass es in vielen Fällen wie HTML funktionieren kann. UTF-16 ist noch weniger erweitertes ASCII, da ASCII-Zeichen als zwei Bytes gespeichert werden, wobei ein Byte gleich 0x00 ist. Die Portierung eines bestehenden Systems zur Unterstützung von Zeichensätzen wie Shift JIS oder UTF-16 ist kompliziert und fehleranfällig.

Verwendung in computerlesbaren Sprachen

Für Programmiersprachen und Dokumentsprachen wie C und HTML ist das Prinzip von Extended ASCII wichtig, da damit mit geringem Programmieraufwand in der Software, die die computerlesbaren Sprachdateien interpretiert, viele verschiedene Kodierungen und damit viele menschliche Sprachen unterstützt werden können .

Das Prinzip von Extended ASCII bedeutet:

  • alle ASCII-Bytes (0x00 bis 0x7F) haben in allen Varianten von Extended ASCII die gleiche Bedeutung ,
  • Bytes, die keine ASCII-Bytes sind, werden nur für freien Text verwendet und nicht für Tags, Schlüsselwörter oder andere Funktionen, die für die interpretierende Software eine besondere Bedeutung haben.

Siehe auch

Verweise

Externe Links