Frage

Der Unicode-Standard hat genug Code-Punkte darin, dass Sie 4 Bytes brauchen sie alle zu speichern. Das ist, was die UTF-32-Codierung der Fall ist. Doch die UTF-8-Codierung quetscht irgendwie diese in viel kleinere Räume, die durch etwas mit „variabler Breite Codierung“ bezeichnet.

In der Tat schafft es die ersten 127 Zeichen des US-ASCII zu repräsentieren in nur einem Byte, das genau wie echte ASCII aussieht, so dass Sie viele ascii Text interpretieren kann, als ob es UTF-8 waren, ohne etwas daran zu tun. Ordentlich Trick. Also, wie funktioniert es?

Ich werde meine eigene Frage hier stellen und zu beantworten, weil ich nur ein bisschen Lesen tat es, um herauszufinden, und ich dachte, es jemand anderes etwas Zeit sparen könnte. Und dazu vielleicht jemand kann mich korrigieren, wenn ich falsch etwas davon haben.

War es hilfreich?

Lösung

Jedes Byte beginnt mit ein paar Bits, die Ihnen sagen, ob es ein einziges Byte-Code-Punkt ist, ein Multi-Byte-Code-Punkt oder eine Fortsetzung eines Multi-Byte-Codepunkt. Wie folgt aus:

0xxx xxxx    A single-byte US-ASCII code (from the first 127 characters)

Die Multi-Byte-Code-Punkte jeden Start mit einem paar Bits, die im Wesentlichen sagen: „Hey, müssen Sie auch das nächste Byte gelesen (oder zwei oder drei), um herauszufinden, was ich bin.“ Sie sind:

110x xxxx    One more byte follows
1110 xxxx    Two more bytes follow
1111 0xxx    Three more bytes follow

Schließlich werden die Bytes, die diese Startcodes alle wie folgt aussehen wie folgt vor:

10xx xxxx    A continuation of one of the multi-byte characters

Da können Sie sagen, welche Art von Byte sind Sie bei Temperaturen von den ersten paar Bits suchen, dann auch wenn etwas verstümmelten irgendwo bekommt, verliert man nicht die ganze Sequenz.

Andere Tipps

RFC3629 - UTF-8, eine Transformation Format der ISO 10646 die letzte Instanz ist hier und alle Erklärungen hat.

Kurz gesagt, mehrere Bits in jedem Byte der UTF-8-kodierte 1-zu-4-Byte-Sequenz, die ein einzelnes Zeichen darstellt, werden verwendet, um anzuzeigen, ob es eine nachfolgende Byte, ein führendes Byte, und wenn ja, wie viele Bytes folgen. Die restlichen Bits enthalten die Nutzlast.

  

UTF-8 war ein anderes System zum Speichern   Ihre Reihe von Unicode-Codepunkten,   diese magischen U + Zahlen im Speicher   Verwendung von 8-Bit-Bytes. In UTF-8, jeden   Codepunkt von 0 bis 127 ist in einem gespeicherten   Single-Byte. Nur Codepunkte 128 und   über 2 gespeichert ist unter Verwendung von 3, in der Tat,   bis zu 6 Bytes.

Auszug aus der absoluten Minimum Jeden Software-Entwickler absolut positiv muß über Unicode und Zeichensätze Know ( No Excuses!)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top