CESU-8

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

CESU-8 (kurz für Compatibility Encoding Scheme for UTF-16: 8-Bit) ist eine Variante von UTF-8, die im Unicode Technical Report #26 beschrieben wird. Der Codepoint wird zunächst in UTF-16 ausgedrückt, dann wird das Ergebnis in UTF-8 rekodiert, als wäre es UCS-2. Das Verfahren ist ähnlich wie das modifizierte UTF-8 von Java, allerdings wird das Zeichen NUL (U+0000) nicht speziell kodiert. Wie beim modifizierten UTF-8 wird CESU-8 in einzelne UTF-16-Wörter dekodiert.

CESU-8-kodierter Text entsteht, wenn ein UCS-2→UTF8-Umwandler (häufig aus der Zeit, in der Unicode nur ein 16-Bit-Zeichensatz war) fehlerhafterweise für die Umwandlung von UTF-16 verwendet wird. Eingeschränkt auf den Bereich der Basic Multilingual Plane (Zeichen bis Nummer 65.535) sind UTF-8 und CESU-8 identisch.

CESU-8 wird von der Oracle-Datenbank-Software verwendet. Der Oracle UTF8-Zeichensatz – mit einem falsch gewählten Namen – der seit Version 8.0 der Datenbank verfügbar ist, entspricht der CESU-8-Kodierung. Der AL32UTF8-Zeichensatz, eingeführt in Version 9.0, entspricht der UTF-8-Kodierung.

Beispiel[Bearbeiten]

Kodierung Unicode code point
U+0045 U+0205 U+10400
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

Gleiches Beispiel mit Binärdarstellung[Bearbeiten]

Kodierung Hexadezimal Binär Unicode code point
UTF-8 45 0100 0101 U+0045
UTF-16 00 45 0000 0000 0100 0101
CESU-8 45 0100 0101
UTF-8 C8 85 1100 1000 1000 0101 U+0205
UTF-16 02 05 0000 0010 0000 0101
CESU-8 C8 85 1100 1000 1000 0101
UTF-8 F0 90 90 80 1111 0000 1001 0000 1001 0000 1000 0000 U+10400
UTF-16 High-Surrogate D8 01 1101 1000 0000 0001
Low-Surrogate DC 00 1101 1100 0000 0000
CESU-8 High ED A0 81 1110 1101 1010 0000 1000 0001
Low ED B0 80 1110 1101 1011 0000 1000 0000
Legende
0100 0101, etc. Datenbits
10000hex Größe der Ebene 0: Basic Multilingual Plane (wird für die UTF-16 Codierung abgezogen)
110110 UTF-16 High-Surrogate Kodierungsbits
110111 UTF-16 Low-Surrogate Kodierungsbits
110,

1110, 11110, 10

UTF-8 Kodierungsbits

Weblinks[Bearbeiten]