CESU-8 - CESU-8

Das Compatibility Encoding Scheme for UTF-16: 8-Bit ( CESU-8 ) ist eine Variante von UTF-8 , die im Unicode Technical Report #26 beschrieben wird. Ein Unicode-Codepunkt aus der Basic Multilingual Plane (BMP), also ein Codepunkt im Bereich U+0000 bis U+FFFF, wird wie in UTF-8 codiert. Ein Unicode-Ergänzungszeichen, dh ein Codepoint im Bereich U+10000 bis U+10FFFF, wird zunächst wie in UTF-16 als Surrogatpaar dargestellt und dann wird jeder Surrogatcodepoint in UTF-8 codiert. Daher benötigt CESU-8 sechs Byte (3 Byte pro Ersatzzeichen) für jedes Unicode-Ergänzungszeichen, während UTF-8 nur vier benötigt. Obwohl im technischen Bericht nicht angegeben, werden ungepaarte Surrogate auch mit jeweils 3 Byte codiert, und CESU-8 entspricht genau der Anwendung eines älteren UCS-2 zu UTF-8-Konverters auf UTF-16-Daten.

Die Kodierung von Unicode-Nicht-BMP-Zeichen funktioniert 11101101 1010yyyy 10xxxxxx 11101101 1011xxxx 10xxxxxx(yyyy repräsentiert die oberen fünf Bits des Zeichens minus eins). Der Bytewert 0xF0 wird in CESU-8 nicht angezeigt, da er die von UTF-8 verwendete 4-Byte-Codierung startet.

CESU-8 ist kein offizieller Teil des Unicode-Standards, da Unicode Technical Reports nur informative Dokumente sind. Es sollte ausschließlich für die interne Verarbeitung und niemals für den externen Datenaustausch verwendet werden.

Die Unterstützung von CESU-8 in HTML- Dokumenten ist durch die W3C- und WHATWG- HTML-Standards verboten , da dies eine Cross-Site-Scripting- Schwachstelle darstellen würde.

Javas modifiziertes UTF-8 ist CESU-8 mit einer speziellen überlangen Kodierung des NUL-Zeichens (U+0000) als Zwei-Byte-Sequenz C0 80.

Die Oracle-Datenbank verwendet CESU-8 für ihren "UTF8"-Zeichensatz. Standard-UTF-8 kann mit dem Zeichensatz " AL32UTF8 " bezogen werden (seit Oracle Version 9.0).

Beispiele

Codepunkt U+0045 U+0205 U+10400
Charakter E ȅ 𐐀
UTF-8 45 C8 85 F0 90 90 80
UTF-16 0045 0205 D801 DC00
CESU-8 45 C8 85 ED A0 81 ED B0 80

Verweise

Externe Links