it-swarm.com.de

Ist ASCII Code 7-Bit oder 8-Bit?

Mein Lehrer sagte mir, dass ASCII ein 8-Bit-Zeichencodierungsschema ist. Es ist jedoch nur für 0-127-Codes definiert, dh es kann in 7 Bits eingepasst werden. Kann nicht argumentiert werden, dass das Bit ASCII eigentlich 7-Bit-Code ist?

Und was wollen wir damit sagen, wenn ASCII 8-Bit-Code ist?

77
Anurag Kalia

ASCII wurde ursprünglich als 7-Bit-Code konzipiert. Dies geschah lange, bevor 8-Bit-Bytes allgegenwärtig wurden, und sogar in den 1990er Jahren konnte man Software finden, die davon ausging, dass sie das 8. Bit jedes Bytes Text für seine eigenen Zwecke verwenden könnte ("nicht 8-Bit-Clean"). Heutzutage denken Leute an it als eine 8-Bit-Codierung, in der die Bytes 0x80 bis 0xFF keine definierte Bedeutung haben, aber das ist ein retcon .

Es gibt Dutzende von Textkodierungen, die das 8. Bit verwenden. Sie können als ASCII-kompatibel eingestuft werden oder nicht und mit fester oder variabler Breite. ASCII-kompatibel bedeutet, dass unabhängig vom Kontext einzelne Bytes mit Werten von 0x00 bis 0x7F dieselben Zeichen wie in ASCII codieren. Sie möchten nichts mit einer nicht ASCII-kompatiblen Textcodierung zu tun haben, wenn Sie dies möglicherweise vermeiden können. naive Programme, die ASCII erwarten, neigen dazu, sie auf katastrophale, oft auch sicherheitsbrechende Weise falsch zu interpretieren. Sie sind heutzutage so veraltet, dass (zum Beispiel) HTML5 ihre Verwendung im öffentlichen Web mit der unglücklichen Ausnahme von UTF-16 verbietet. Ich werde nicht mehr über sie sprechen.

Eine Kodierung mit fester Breite bedeutet, wie es sich anhört: Alle Zeichen werden mit der gleichen Anzahl von Bytes kodiert. Um ASCII-kompatibel zu sein, muss eine Kodierung mit festem Zeichen alle Zeichen mit nur einem Byte kodieren, sodass sie nicht mehr als 256 Zeichen enthalten kann. Die gebräuchlichste derartige Kodierung ist heutzutage Windows-1252 , eine Erweiterung von ISO 8859-1 .

Es gibt nur eine ASCII-kompatible Kodierung mit variabler Breite, die es heutzutage zu wissen gilt, aber es ist sehr wichtig: UTF-8 , die den gesamten Unicode-Code in eine ASCII-kompatible Kodierung packt. Sie möchten dies wirklich verwenden, wenn Sie es verwalten können.

Als letzte Bemerkung bezieht sich "ASCII" heutzutage auf seine praktische - Definition von Unicode, nicht auf seinen ursprünglichen Standard (ANSI X3.4-1968), da historisch mehrere Dutzend Variationen des 127-Zeichens ASCII vorhanden waren Repertoire - beispielsweise kann ein Teil der Satzzeichen durch akzentuierte Buchstaben ersetzt werden, um die Übertragung französischen Textes zu erleichtern. Heutzutage sind alle diese Variationen veraltet, und wenn Leute "ASCII" sagen, meinen sie, dass die Bytes mit dem Wert 0x00 bis 0x7F die Unicode-Codepunkte U + 0000 bis U + 007F kodieren. Dies ist wahrscheinlich nur für Sie von Belang, wenn Sie jemals technische Standards schreiben.

Wenn Sie sich für die Geschichte von ASCII und die vorangegangenen Kodierungen interessieren, beginnen Sie mit dem Artikel "Die Evolution der Zeichencodes, 1874-1968" (Kopie von samizdat unter http://falsedoor.com/ doc/ascii_evolution-of-character-codes.pdf ) und jagen Sie dann deren Referenzen (viele davon sind nicht online verfügbar und können selbst mit Zugriff auf eine Universitätsbibliothek schwer zu finden sein, bedaure ich zu sagen).

72
zwol

Unter Linux sagt man ascii:

ASCII ist der amerikanische Standardcode für Information Interchange. Es ist ein 7-Bit-Code. 

12
BeniBela

Die Originaltabelle ASCII ist mit 7 Bits codiert daher 128 Zeichen.

Heutzutage verwenden die meisten Leser/Editoren eine "erweiterte" ASCII - Tabelle (aus ISO 8859-1), die auf 8 Bit kodiert ist und 256 Zeichen (einschließlich Á, Ä, Œ, é, è und andere Zeichen, die für europäische Sprachen sowie mathematische Glyphen und andere Symbole nützlich sind.

UTF-8 verwendet zwar dieselbe Codierung wie die Basistabelle ASCII (dh 0x41 ist A in beiden Codes), hat jedoch nicht die gleiche Codierung für den Block "Latin Extended-A". Dies führt manchmal dazu, dass komische Zeichen in Wörtern wie à la carte oder piñata erscheinen.

8
Guillaume

ASCII-Codierung ist 7-Bit, aber in der Praxis werden Zeichen, die in ASCII codiert sind, nicht in 7-Bit-Gruppen gespeichert. Stattdessen wird ein ASCII in einem Byte gespeichert, wobei das MSB normalerweise auf 0 gesetzt ist (ja, es wird in ASCII verschwendet).

Sie können dies überprüfen, indem Sie eine Zeichenfolge in den Zeichensatz ASCII eines Texteditors eingeben, die Codierung auf ASCII setzen und die Binärdatei/das Hexadezimal anzeigen:
 enter image description here 

Abgesehen davon: Die Verwendung von (streng) ASCII-Codierung ist jetzt ungewöhnlich zugunsten von UTF-8 (was nicht das oben erwähnte MSB verschwendet - in der Tat bedeutet ein MSB von 1 Der Codepunkt ist mit mehr als 1 Byte codiert.

1
flow2k

Der ursprüngliche ASCII Code lieferte 128 verschiedene Zeichen mit den Nummern 0 bis 127. ASCII ein 7-Bit-Code ist synonym, da das 8-Bit-Byte das gemeinsame Speicherelement ist , ASCII lässt Platz für 128 zusätzliche Zeichen, die für Fremdsprachen und andere Symbole verwendet werden. Der 7-Bit-Code wurde jedoch ursprünglich vor dem 8-Bit-Code erstellt. ASCII = steht für American Standard Code for Information Interchange In früheren Internet-Mail-Systemen wurden nur 7-Bit-Codes unterstützt ASCII), da dann Programme und Multimediadateien über Saugsysteme ausgeführt werden konnten Systeme verwenden 8 Bit des Bytes, müssen es dann jedoch mithilfe von Codierungsmethoden wie MIME, UUcoding und BinHex in ein 7-Bit-Format umwandeln zusätzliche Bytes, um sie zu codieren.

0
brookey