Der Unicode-Standard enthält genügend Codepunkte, sodass Sie 4 Bytes benötigen, um alle zu speichern. Das macht die UTF-32-Codierung. Die UTF-8-Codierung drückt diese jedoch irgendwie in viel kleinere Räume, indem sie eine sogenannte "Codierung mit variabler Breite" verwendet.
Tatsächlich gelingt es ihm, die ersten 127 Zeichen von US-ASCII in nur einem Byte darzustellen, das genau wie echtes ASCII aussieht, sodass Sie viele ASCII-Texte so interpretieren können, als wäre es UTF-8, ohne etwas dagegen zu tun. Ordentlicher Trick. Wie funktioniert es?
Ich werde hier meine eigene Frage stellen und beantworten, weil ich nur ein bisschen gelesen habe, um es herauszufinden, und ich dachte, es könnte jemand anderem Zeit sparen. Außerdem kann mich vielleicht jemand korrigieren, wenn ich etwas falsch verstanden habe.
quelle
Antworten:
Jedes Byte beginnt mit einigen Bits, die angeben, ob es sich um einen Einzelbyte-Codepunkt, einen Mehrbyte-Codepunkt oder eine Fortsetzung eines Mehrbyte-Codepunkts handelt. So was:
Die Multi-Byte-Codepunkte beginnen jeweils mit ein paar Bits, die im Wesentlichen sagen: "Hey, Sie müssen auch das nächste Byte (oder zwei oder drei) lesen, um herauszufinden, was ich bin." Sie sind:
Schließlich sehen die Bytes, die diesen Startcodes folgen, alle so aus:
Da Sie anhand der ersten Bits erkennen können, welche Art von Byte Sie betrachten, verlieren Sie nicht die gesamte Sequenz, selbst wenn irgendwo etwas verstümmelt wird.
quelle
next char is continuation
? Wenn wir ein 3-Byte-Zeichen hätten, wäre es wie1xxxxxxx 1xxxxxxx 0xxxxxxx
folgt : Es würde weniger Platz verschwendet.RFC3629 - UTF-8, ein Transformationsformat von ISO 10646 ist hier die letzte Instanz und enthält alle Erklärungen.
Kurz gesagt, mehrere Bits in jedem Byte der UTF-8-codierten 1 bis 4-Byte-Sequenz, die ein einzelnes Zeichen darstellt, werden verwendet, um anzuzeigen, ob es sich um ein nachfolgendes Byte, ein führendes Byte handelt und wenn ja, wie viele Bytes folgen. Die restlichen Bits enthalten die Nutzlast.
quelle
Auszug aus dem absoluten Minimum Jeder Softwareentwickler muss unbedingt über Unicode und Zeichensätze Bescheid wissen (keine Ausreden!)
quelle