Ein Unicode Transformation Format, abgekürzt UTF, ist eine Methode, Unicode-Zeichen auf Folgen von Bytes abzubilden.
Für die Repräsentation der Unicode-Zeichen zum Zweck der elektronischen Datenverarbeitung gibt es verschiedene Transformationsformate. In jedem der Formate lassen sich alle 1.114.112 im Unicode-Standard enthaltenen Zeichen (Codepoints) darstellen. Auch lässt sich jedes dieser Formate verlustfrei in ein anderes UTF-Format konvertieren.
Die verschiedenen Formate unterscheiden sich hinsichtlich deren Platzbedarf auf Speichermedien (Speichereffizienz), dem Kodierungs- und Dekodierungsaufwand (Laufzeitverhalten) sowie in ihrer Kompatibilität zu anderen (älteren) Kodierungsarten. Während beispielsweise einige Formate sehr effizienten Zugriff (Random Access) auf einzelne Zeichen innerhalb einer Zeichenfolge (String) erlauben, gehen andere sparsam mit Speicherplatz um. Daher ist bei der Auswahl eines bestimmten Unicode-Transformationsformats das für das vorgesehene Anwendungsgebiet geeignetste zu bestimmen.
UTF-32 stellt jedes Unicode-Zeichen als 32-Bit (4 Bytes) langes Codewort dar und ist damit die einfachste Art, den Unicode-Standard zu implementieren. Nicht alle 32-Bit Werte sind erlaubte UTF-32 Codeworte, sondern nur der Wertebereich der maximal 1.114.112, also bis hexadezimal 10FFFF.
Der entscheidende Nachteil von UTF-32 ist der extrem hohe Speicherbedarf bei Texten, die überwiegend im lateinischen Schriftsystem kodiert sind. Verglichen mit den verbreiteten ISO-8859-Zeichensätzen wird daher viermal so viel Speicherplatz belegt.
UTF-32 zeigt ihre besonderen Vorteile beim wahlfreien Zugriff auf ein bestimmtes Zeichen, da die Adresse des n-ten Zeichens durch einfachste Pointerarithmetik ermittelt werden kann. Auch ist es möglich, anhand der Größe eines Dokuments in Bytes umgehend die Anzahl der enthaltenen Zeichen auszurechnen (nämlich durch eine simple Division durch 4). Diese Eigenschaft relativiert sich dadurch, dass außer in einfachen Fällen ein Unicodezeichen nicht einem Schriftzeichen entspricht.
Im aktuellen Unicode Standard 4.0.1 ist UTF-16 identisch zum UCS-2. Das liegt daran, dass das Unicode-Konsortium sehr eng mit ISO/IEC zusammenarbeitet. UTF-16 verbindet bei Bedarf auch 2 Zwei-Byte-Paare und emuliert so einen höheren Wertebereich, was in UCS-2 nicht möglich ist.
Man spricht bei einem Zwei-Byte-Paar in UTF-16 von einer Code Unit. Zeichencodes, die sich nicht in 2 Bytes darstellen lassen, werden als so genanntes surrogate pair dargestellt. Es ist zu beachten, dass der volle Wertebereich von 2 Bytes (bzw. 4 Bytes bei einem Paar), nicht ausgenutzt werden kann, da durch die Kennzeichnung von Paaren ein gewisser Overhead entsteht.
Wird ein Zeichen in 4 Bytes codiert, so spricht man bei den ersten Beiden vom high surrogate und bei den anderen vom low surrogate. High surrogates haben einen Wert zwischen D800 und DBFF, low surrogates zwischen DC00 und DFFF. Wird ein Zeichen in einer einzigen Code Unit kodiert, so darf der Code für dieses Zeichen nicht in den genannten Wertebereichen liegen, da sonst anhand einer Bytefolge nicht entschieden werden könnte, ob es sich um zwei einzelne Code Units oder um ein surrogate pair handelt.
Der UTF-8-Code kann verlustfrei in UTF-16 bzw. UTF-32-Code umgewandelt werden, ebenso kann aus diesen Codierungen UTF-8-Code errechnet werden, wozu entsprechende Bibliotheken existieren.
UTF-8 hat gegenüber den anderen Codierungsverfahren den Vorteil, dass er aus einem einfachen Character-String besteht (Oktettfolge). Da viele ältere Programme mit solchen einfachen Strings arbeiten, können diese vergleichsweise einfach auf UTF-8 erweitert werden, wohingegen eine Umstellung auf UTF-16 bzw. UTF-32 wesentlich aufwändiger ist.
Zusätzlich hat UTF-8 den Vorteil, dass dermaßen codierte Strings einfach über Netzwerke übertragen werden können, ohne sich um möglicherweise unterschiedliche Byte-Reihenfolge kümmern zu müssen.
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Unicode Transformation Format".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world