Startseite » wie man » Warum benötigen englische Zeichen weniger Bytes, um sie darzustellen als Zeichen in anderen Alphabeten?

    Warum benötigen 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 von Bytes, die für ihre Darstellung erforderlich sind. Aber warum ist das so? Der heutige SuperUser-Q & A-Beitrag enthält die Antworten auf die Frage eines neugierigen Lesers.

    Die heutige Question & Answer-Sitzung wird dank SuperUser zur Verfügung gestellt - einer Unterteilung von Stack Exchange, einer Community-basierten Gruppierung von Q & A-Websites.

    Teilweises ASCII-Diagramm mit freundlicher Genehmigung von Wikipedia.

    Die Frage

    SuperUser-Leser khajvah möchte wissen, warum verschiedene Alphabete beim Speichern unterschiedliche Festplattenspeicher beanspruchen:

    Wenn ich 'a' in eine Textdatei stecke und sie speichere, wird sie 2 Byte groß. Wenn ich jedoch ein Zeichen wie 'ա' (ein Buchstabe aus dem armenischen Alphabet) einsetze, wird es 3 Byte groß.

    Was ist der Unterschied zwischen Alphabeten auf einem Computer? Warum benötigt Englisch weniger Speicherplatz, wenn es gespeichert wird??

    Briefe sind Briefe, oder? Vielleicht nicht! Was ist die Antwort auf dieses alphabetische Mysterium??

    Die Antwort

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

    Eines der ersten Kodierungsschemata, das für die Verwendung in Mainstream-Computern entwickelt wurde, ist ASCII (Amerikanischer Standardcode für den Informationsaustausch) Standard. Es wurde in den 1960er Jahren in den Vereinigten Staaten entwickelt.

    Das englische Alphabet verwendet einen Teil des lateinischen Alphabets (beispielsweise gibt es nur wenige akzentuierte Wörter in Englisch). Es gibt 26 einzelne Buchstaben in diesem Alphabet, wobei der Fall nicht berücksichtigt wird. Und es müssten auch die einzelnen Zahlen und Satzzeichen in jedem Schema vorhanden sein, das vorgibt, das englische Alphabet zu kodieren.

    In den 1960er-Jahren hatten Computer nicht mehr so ​​viel Speicher oder Speicherplatz wie wir. ASCII wurde entwickelt, um eine Standarddarstellung eines funktionalen Alphabets auf allen amerikanischen Computern zu sein. 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 jeweils 8 Bits 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. Dies bedeutete, dass für jede Sprache unabhängig von anderen Schemata neue Codierungsschemata entwickelt werden mussten, die in Konflikt geraten würden, wenn sie von verschiedenen Sprachendgeräten gelesen wurden.

    Unicode entstand als Lösung für das Vorhandensein verschiedener Terminals, indem alle möglichen sinnvollen Zeichen in einem einzigen abstrakten Zeichensatz zusammengefügt wurden.

    UTF-8 ist eine Möglichkeit, den Unicode-Zeichensatz zu kodieren. Es ist eine Kodierung mit variabler Breite (d. H. Verschiedene Zeichen können unterschiedliche Größen haben) und wurde für die Rückwärtskompatibilität mit dem früheren ASCII-Schema entwickelt. Der ASCII-Zeichensatz bleibt also ein Byte groß, während alle anderen Zeichen zwei oder mehr Byte groß sind. UTF-16 ist eine andere Möglichkeit, den Unicode-Zeichensatz zu kodieren. 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 Zeilenumbruchs 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.

    Bei Sprachen, für die mehr Möglichkeiten erforderlich sind, kann eine einfache 1: 1-Zuordnung nicht beibehalten werden, sodass zum Speichern eines Zeichens mehr Daten erforderlich sind.

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


    Haben Sie der Erklärung etwas hinzuzufügen? Sound off in den Kommentaren. Möchten Sie mehr Antworten von anderen technisch versierten Stack Exchange-Benutzern lesen? Hier geht es zum vollständigen Diskussionsthread.