2017-01-10 3 views
0

In der JVM-Spezifikation, in the description of the modified UTF-8, heißt es das Format der v für die "Zwei-mal-drei-Byte-Format":Format von v in der JVM modifizierten UTF-8

Das bedeutet zusätzliche Zeichen werden durch sechs Bytes dargestellt: u, v, w, x, y und z

Tabelle 4.14. V: 1010 (Bits 20-16) -1

Da v 8 Bits, es bedeutet, dass (bits 20-16)-1 4 Bit sein muß. Wie kann die -1 schrumpfen bits 20-26 von 5 bis 4 Bits?

(Ergänzende Frage: Gibt es einen Grund, „zwei-mal-drei-Byte“ zu sagen statt „Sechs-Byte“?)

Antwort

1

Unicode code pointsU+0000-U+10FFFF reichte sind.

Werte größer als U+FFFF heißen zusätzliche Codestellen. Ihre binäre Darstellung ist uuuuuxxxxxxxxxxxxxxxx (21 Bits), wobei uuuuu zwischen 00001 und 10000 ist.

In UTF-16 werden zusätzliche Codepunkte von surrogate pairs wie in 3.9 Unicode Encoding Forms, D91 beschrieben codiert. Das heißt, uuuuuxxxxxxxxxxxxxxxx wird durch zwei 16-Bit-Zeichen dargestellt:
110110wwwwxxxxxx 110111xxxxxxxxxx, wobei wwww = uuuuu - 1.

00001 ≤ uuuuu ≤ 10000 daher 0000 ≤ wwww ≤ 1111

nun modifizierte UTF-8 kodiert Zusatz-Code-Punkte, als ob sie zwei Charaktere waren: hohe Surrogat und niedrige Surrogat. Jedes dieser Ersatzzeichen wird in UTF-8 durch 3 Byte dargestellt. Daher "zwei-mal-drei" Abbildung.