UTF-32

Kodierung von Unicode mit 4 Byte pro Codepoint

UTF-32 ist eine Methode zur Kodierung von Unicode-Zeichen, bei der jedes Zeichen mit vier Byte (32 Bit) kodiert wird. Sie kann deshalb als die einfachste Kodierung bezeichnet werden, da alle anderen UTF-Kodierungen variable Bytelängen benutzen. Im Unicode Standard ist UTF-32 eine Untermenge von UCS-4.

Byte Order

Bearbeiten

Wie auch bei UTF-16 gibt es auch bei UTF-32 zwei Möglichkeiten, die Daten in einem byte-orientierten Datenstrom zu übertragen: Big Endian und Little Endian. Hierfür wurden die Bezeichnungen UTF-32BE und UTF-32LE definiert. UTF-32 wird jedoch – im Gegensatz zu UTF-16 – kaum in Speicher-, Datei- oder Datenaustauschformaten verwendet; und bei rein programm-interner Verwendung werden die Daten normalerweise stets in der Byte-Reihenfolge verarbeitet, wie sie von der CPU-Architektur vorgegeben sind.

Vorteile

Bearbeiten

UTF-32 zeigt seine Vorteile bei einigen Sprachen beim wahlfreien Zugriff auf einen bestimmten Zahlenwert eines Zeichens im Coderaum (Codepoint), da dessen Adresse durch die Zeigerarithmetik konstanter Zeit berechnet werden kann. Es ist auch möglich, anhand der Größe eines Dokuments in Bytes umgehend die Anzahl der enthaltenen Codepoints auszurechnen (nämlich durch eine simple Division durch 4).

Nachteile

Bearbeiten

Oftmals kann ein Unicode-Zeichen (extended grapheme cluster) nicht ausreichend mit nur einem Codepoint repräsentiert werden (z. B. bei Ligaturen oder Koreanisch).

Streng genommen kodieren sämtliche UTF-Kodierungen keine Zeichen, sondern sogenannte Unicode Codepoints. Es existieren in Unicode zusammengesetzte Zeichen, die mehr als einen Codepoint benötigen (z. B. Zeichen mit ungewöhnlichen oder mehrfachen Akzenten, wie sie z. B. im Vietnamesischen vorkommen). Sollen derartige Zeichen korrekt verarbeitet werden, ist auch in einer UTF-32-kodierten Zeichenkette kein wahlfreier Zugriff auf einzelne Zeichen möglich.

Ein Nachteil von UTF-32 ist der hohe Speicherbedarf. Bei Texten, die überwiegend aus lateinischen Buchstaben bestehen, wird – verglichen mit dem verbreiteten UTF-8- oder den ISO-8859-Zeichensätzen – etwa der vierfache Speicherplatz belegt. Deshalb wird es auch kaum zum externen Speichern verwendet. Ein weiterer Nachteil ist die fehlende Abwärtskompatibilität zu ASCII, wie sie z. B. mit UTF-8 gegeben ist.