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 Textbytes für ihre eigenen Zwecke verwenden konnte ("nicht 8-Bit-Clean"). Heutzutage wird es als 8-Bit-Codierung betrachtet, bei der die Bytes 0x80 bis 0xFF keine definierte Bedeutung haben, aber das ist ein Retcon .
Es gibt Dutzende von Textcodierungen, die das 8. Bit verwenden. Sie können als ASCII-kompatibel oder nicht ASCII-kompatibel und mit fester oder variabler Breite klassifiziert werden. ASCII-kompatibel bedeutet, dass einzelne Bytes mit Werten von 0x00 bis 0x7F unabhängig vom Kontext dieselben Zeichen codieren wie in ASCII. 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 sicherheitsrelevante Weise falsch zu interpretieren. Sie sind heutzutage so veraltet, dass (zum Beispiel) HTML5 ihre Verwendung im öffentlichen Web verbietet, mit der unglücklichen Ausnahme von UTF-16 . Ich werde nicht mehr über sie sprechen.
Eine Codierung mit fester Breite bedeutet, wie es sich anhört: Alle Zeichen werden mit der gleichen Anzahl von Bytes codiert. Um ASCII-kompatibel zu sein, muss eine Festcodierung alle Zeichen mit nur einem Byte codieren, sodass sie nicht mehr als 256 Zeichen enthalten darf. Die heutzutage am häufigsten verwendete Codierung ist Windows-1252 , eine Erweiterung von ISO 8859-1 .
Es gibt heutzutage nur eine ASCII-kompatible Codierung mit variabler Breite, die es zu kennen gilt, aber sie ist sehr wichtig: UTF-8 , die den gesamten Unicode in eine ASCII-kompatible Codierung packt. Sie möchten dies wirklich verwenden, wenn Sie es verwalten können.
Abschließend nimmt "ASCII" heutzutage seine praktische Definition von Unicode, nicht von seinem ursprünglichen Standard (ANSI X3.4-1968), da es historisch gesehen mehrere Dutzend Variationen des ASCII-Repertoires mit 127 Zeichen gab - zum Beispiel einige davon Die Interpunktion kann durch Buchstaben mit Akzent ersetzt werden, um die Übertragung von französischem Text zu erleichtern. Heutzutage sind alle diese Variationen veraltet, und wenn Leute "ASCII" sagen, bedeuten sie, dass die Bytes mit den Werten 0x00 bis 0x7F Unicode-Codepunkte U + 0000 bis U + 007F codieren. Dies wird Ihnen wahrscheinlich nur wichtig sein, wenn Sie jemals einen technischen Standard schreiben.
Wenn Sie sich für die Geschichte von ASCII und die vorangegangenen Codierungen interessieren, beginnen Sie mit dem Artikel "The Evolution of Character Codes, 1874-1968" (Samizdat-Kopie unter http://falsedoor.com/doc/ascii_evolution-of- zeichencodes.pdf ) und dann seine Referenzen verfolgen (von denen viele online nicht verfügbar sind und selbst beim Zugang zu einer Universitätsbibliothek schwer zu finden sein können, muss ich leider sagen).
Unter Linux
man ascii
heißt es:quelle
Die ursprüngliche ASCII-Tabelle ist auf 7 Bit codiert und hat daher 128 Zeichen.
Heutzutage verwenden die meisten Leser / Redakteure eine "erweiterte" ASCII-Tabelle (ab ISO 8859-1 ), die auf 8 Bit codiert ist und 256 Zeichen enthält (einschließlich Á , Ä , Œ , é , è und anderer Zeichen, die auch für europäische Sprachen nützlich sind als mathematische Glyphen und andere Symbole).
Während UTF-8 verwendet die gleiche Codierung wie die Basis - ASCII - Tabelle (Bedeutung
0x41
ist A in beiden Codes), ist es nicht die gleiche Codierung für den „Latin Extended-A“ Block teilen. Was manchmal dazu führt, dass seltsame Zeichen in Wörtern wie à la carte oder piñata vorkommen .quelle
Die ASCII-Codierung ist 7-Bit, aber in der Praxis werden in ASCII codierte Zeichen nicht in Gruppen von 7 Bit 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 ASCII-Zeichensatz in einem Texteditor eingeben, die Codierung auf ASCII einstellen und die Binärdatei / Hex anzeigen:
Abgesehen davon: Die Verwendung von (streng) ASCII-Codierung ist jetzt zugunsten von UTF-8 ungewöhnlich (wodurch das oben erwähnte MSB nicht verschwendet wird - tatsächlich zeigt ein MSB von 1 an, dass der Codepunkt mit mehr als 1 Byte codiert ist).
quelle
Der ursprüngliche ASCII-Code enthielt 128 verschiedene Zeichen mit den Nummern 0 bis 127. ASCII und 7-Bit sind synonym. Da das 8-Bit-Byte das gemeinsame Speicherelement ist, lässt ASCII 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 für den Informationsaustausch In frühen Internet-Mail-Systemen wurden nur 7-Bit-ASCII-Codes unterstützt, da dann Programme und Multimediadateien über Saugsysteme ausgeführt werden konnten. Diese Systeme verwenden 8 Bit des Bytes, müssen dann jedoch mithilfe von Codierungsmethoden wie MIME, UUcoding und BinHex in ein 7-Bit-Format umgewandelt werden. Dies bedeutet, dass das 8-Bit in 7-Bit-Zeichen konvertiert wurde, wodurch zusätzliche Bytes hinzugefügt werden, um sie zu codieren.
quelle
Wenn wir ASCII als 7-Bit-Code aufrufen, wird das Bit ganz links als Vorzeichenbit verwendet, sodass wir mit 7 Bits bis zu 127 schreiben können. Dies bedeutet von -126 bis 127, da der maximale Imam-Wert von ASCII 0 bis 255 beträgt. Dies kann sein Nur mit dem Argument 7 Bit zufrieden, wenn das letzte Bit als Vorzeichenbit betrachtet wird
quelle