InfoCenter

UTF-32

Bei der Unicode Kodierung UTF-32 wird jedes einzelne Zeichen mit vier Byte (32 Bit) kodiert. Das Resultat ist ein größerer Speicherbedarf gegenüber allen anderen Kodierungen, da alle anderen Kodierungen variable Bytelängen für ein Zeichen benutzen. Daraus erwächst aber auch der Vorteil, dass UTF-32 kodierte Dateien oder Streams leichter zu verarbeiten sind, da jedes Byte genau seinen Platz hat und es zu keinen variablen Längen kommen kann.

Vorteile und Nachteile von UTF-32

Ein Vorteil dieser Kodierung besteht darin, dass sehr einfach auf ein bestimmtes Zeichen im Speicher zugegriffen werden kann und die Länge eines Textes auch entsprechend schnell ermittelbar ist, indem die Anzahl an Bytes einfach durch vier geteilt wird.

Ein entscheidender Nachteil ist der größere Speicherbedarf. Im Vergleich zu Texten mit lateinischen Buchstaben, die im Format UTF-7, UTF-8 oder ANSI abgespeichert sind, ergibt sich ein vierfach höherer Speicherbedarf. Selbst bei Texten die andere Zeichen wie kyrillische oder griechische Buchstaben enthalten ergibt sich ein viel größerer Speicherbedarf, da die wenigsten Zeichen 4 Bytes benötigen und auch mit weniger Bytes kodiert werden könnten.

Byte Order Mark

UTF-32 kann sowohl als Big Endian als auch als Little Endian abgespeichert werden. Dies bedeutet, dass die Byte-Reihenfolge (= Endianness) entweder von rechts nach links (Big Endian) oder von links nach rechts (Little Endian) gestaltet ist. Die Byte Order Mark (BOM) bei einer Speicherung als Big Endian ist 00 00 FE FF, als Little Endian entsprechend FF FE 00 00.

Falls man eine Datei im UTF-32 Format in einem Texteditor oder einem sonstigen Programm öffnet, welches das UTF-32 Format nicht interpretieren kann, erscheinen lateinische Buchstaben typischerweise mit einem Abstand von je 3 Leerzeichen oder Fragezeichen zwischen den einzelnen Buchstaben. Das liegt daran, dass im UTF-32 Format jedes Zeichen mit 4 Bytes gespeichert wird und Zeichen wie A-Z oder a-z mit 3 Null-Bytes zuzüglich einem Byte das genau dem zugehörigen Byte des Zeichens aus dem ASCII-Zeichensatz kodiert wird. Interpretiert das Programm die Byte-Folge der Datei nun als ASCII oder Latin-1 bleiben die ASCII beziehungsweise Latin-1 Zeichen erhalten und die Null-Bytes werden als Leerzeichen oder Fragezeichen dargestellt.

Die Byte Order Mark wird in diesem Kontext für UTF32-BE als "??þÿ" beziehungsweise als "ÿþ??" für UTF32-LE kodierte Dateien dargestellt. Das Null-Byte hat keine konkrete Zeichenentsprechung, daher hängt die Darstellung von dem verwendeten Programm ab. Neben Leerzeichen oder Fragezeichen kann es auch sein, dass das Lesen der Datei an der Stelle des ersten Null-Bytes komplett abgebrochen wird.