Connect with us

Wie man

Warum brauchen englische Zeichen weniger Bytes, um sie darzustellen als Zeichen in anderen Alphabeten?

Warum brauchen englische Zeichen weniger Bytes, um sie darzustellen als Zeichen in anderen Alphabeten?

Während die meisten von uns wahrscheinlich nie aufgehört haben, darüber nachzudenken, haben alphabetische Zeichen nicht alle die gleiche Größe in der Anzahl der Bytes, die sie benötigen, um sie darzustellen. Aber warum ist das so? Der heutige SuperUser Q&A-Post enthält die Antworten auf die Frage eines neugierigen Lesers.

Die Frage

SuperUser reader khajvah möchte wissen, warum verschiedene Alphabete beim Speichern unterschiedlich viel Speicherplatz beanspruchen:

Wenn ich ‘a’ in eine Textdatei einfüge und speichere, wird sie 2 Byte groß. Aber wenn ich ein Zeichen wie ‘ա’ (ein Buchstabe aus dem armenischen Alphabet) einfüge, ist es 3 Byte groß.

Was ist der Unterschied zwischen Alphabeten auf einem Computer? Warum nimmt Englisch beim Speichern weniger Platz ein?

Buchstaben sind Buchstaben, oder? Vielleicht nicht! Was ist die Antwort auf dieses alphabetische Rätsel?

Die Antwort

Die SuperUser-Mitarbeiter Doktoro Reichard und ernie haben die Antwort für uns. Zunächst Doktoro Reichard:

Eines der ersten Codierungsschemata, das für den Einsatz in Mainstream-Computern entwickelt wurde, ist das ASCII () Standard. Es wurde in den 1960er Jahren in den USA entwickelt.

Das englische Alphabet verwendet einen Teil des lateinischen Alphabets (zum Beispiel gibt es im Englischen nur wenige Wörter mit Akzent). Es gibt 26 einzelne Buchstaben in diesem Alphabet, die Groß-/Kleinschreibung nicht berücksichtigt. Und es müssten auch die einzelnen Zahlen und Satzzeichen in jedem Schema existieren, das vorgibt, das englische Alphabet zu kodieren.

Die 1960er Jahre waren auch eine Zeit, in der Computer nicht über die Menge an Arbeitsspeicher oder Festplattenspeicher verfügten, die wir heute haben. ASCII wurde als Standarddarstellung eines funktionalen Alphabets für alle amerikanischen Computer entwickelt. Damals wurde die Entscheidung, jedes ASCII-Zeichen 8 Bit (1 Byte) lang zu machen, aufgrund technischer Details der Zeit getroffen (der Wikipedia-Artikel erwähnt die Tatsache, dass perforiertes Band 8 Bit gleichzeitig in einer Position hielt). Tatsächlich kann das ursprüngliche ASCII-Schema mit 7 Bits übertragen werden, und das achte könnte für Paritätsprüfungen verwendet werden. Spätere Entwicklungen erweiterten das ursprüngliche ASCII-Schema um mehrere akzentuierte, mathematische und terminale Zeichen.

Mit der jüngsten Zunahme der Computernutzung auf der ganzen Welt hatten immer mehr Menschen aus verschiedenen Sprachen Zugang zu einem Computer. Das bedeutete, dass für jede Sprache neue Codierungsschemata entwickelt werden mussten, unabhängig von anderen Schemata, die beim Lesen von verschiedenen Sprachterminals in Konflikt geraten würden.

Unicode entstand als Lösung für die Existenz verschiedener Terminals, indem alle möglichen bedeutungsvollen Zeichen zu einem einzigen abstrakten Zeichensatz zusammengeführt wurden.

UTF-8 ist eine Möglichkeit, den Unicode-Zeichensatz zu codieren. Es handelt sich um eine Codierung mit variabler Breite (dh verschiedene Zeichen können unterschiedliche Größen haben) und wurde für die Abwärtskompatibilität mit dem früheren ASCII-Schema entwickelt. Daher bleibt der ASCII-Zeichensatz ein Byte groß, während alle anderen Zeichen zwei oder mehr Bytes groß sind. UTF-16 ist eine weitere Möglichkeit, den Unicode-Zeichensatz zu codieren. Im Vergleich zu UTF-8 werden Zeichen entweder als Satz von einer oder zwei 16-Bit-Codeeinheiten codiert.

Wie in anderen Kommentaren erwähnt, belegt das Zeichen ‘a’ ein einzelnes Byte, während ‘ա’ zwei Byte belegt, was eine UTF-8-Kodierung bezeichnet. Das zusätzliche Byte in der ursprünglichen Frage war auf das Vorhandensein eines Newline-Zeichens am Ende zurückzuführen.

Gefolgt von der Antwort von ernie:

1 Byte ist 8 Bit und kann somit bis zu 256 (2^8) verschiedene Werte darstellen.

Für Sprachen, die mehr Möglichkeiten erfordern, kann eine einfache 1-zu-1-Zuordnung nicht beibehalten werden, sodass mehr Daten zum Speichern eines Zeichens benötigt werden.

Beachten Sie, dass die meisten Codierungen im Allgemeinen die ersten 7 Bits (128 Werte) für verwenden ASCII Zeichen. Damit bleibt das 8. Bit oder 128 weitere Werte für mehr Zeichen übrig. Fügen Sie Akzentzeichen, asiatische Sprachen, Kyrillisch usw. hinzu und Sie können leicht erkennen, warum 1 Byte nicht ausreicht, um alle Zeichen aufzunehmen.

Möchten Sie der Erklärung noch etwas hinzufügen? Ton aus in den Kommentaren. Möchten Sie mehr Antworten von anderen technisch versierten Stack Exchange-Benutzern lesen? Sehen Sie sich hier den vollständigen Diskussionsthread an.

Continue Reading
Click to comment

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Tendencia