Zum Inhalt springen

UTF-8

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 16. August 2004 um 12:44 Uhr durch Kuli (Diskussion | Beiträge) (Klrstellung der Lage der Bits). Sie kann sich erheblich von der aktuellen Version unterscheiden.

UTF-8 (Abk. für 8-bit Unicode Transformation Format) ist eine Kodierung für Unicode-Zeichen; dabei wird jedem Unicode-Zeichen eine speziell kodierte Bytekette von variabler Länge zugeordnet.

UTF-8 ist gegenwärtig als Request for Comments RFC 3629 standardisiert (UTF-8, a transformation format of ISO 10646). Dieser Standard löst das ältere RFC 2279 ab.

Unicode-Zeichen mit den Werten aus dem Bereich von 0 bis 127 (0 bis 7F hexadezimal) werden in der UTF-8-Kodierung als ein Byte mit dem gleichen Wert wiedergegeben. Insofern sind alle Daten, die ausschließlich echte ASCII-Zeichen verwenden, in beiden Darstellungen identisch.

Unicode-Zeichen größer als 127 werden in der UTF-8-Kodierung zu Byteketten der Länge zwei bis vier.


Unicode-Bereich UTF-8 Kodierung Bemerkungen
U0000 - U007F 0xxxxxxx In diesem Bereich (128 Zeichen) entspricht UTF-8 genau dem ASCII-Code: Das erste Bit ist 0, die darauf folgende 7-Bitkombination ist das ASCII-Zeichen.
U0080 - U07FF 110xxxxx 10xxxxxx Das erste Byte beginnt mit binär 11, die folgenden Bytes beginnen mit binär 10; die x stehen für die fortlaufende Bitkombination des Unicodezeichens. Die Anzahl der Einsen bis zur ersten 0 im ersten Byte ist die Anzahl der Bytes für das Zeichen.
U0800 - UFFFF 1110xxxx 10xxxxxx 10xxxxxx
U10000 - U10FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

Theoretisch ließe sich das Schema fortsetzen, die aktuelle RFC beschränkt die Zeichen jedoch auf die durch UTF-16 erreichbaren, also bis U10FFFF.

Betrachtet man die Bitfolgen etwas genauer, erkennt man die große Sinnfälligkeit von UTF-8:

  • Ist das höchste Bit des ersten Byte 0, handelt es sich um ein gewöhnliches ASCII-Zeichen, da ASCII eine 7-Bit-Kodierung ist und die ersten 128 Zeichen des Unicode die ASCII-Zeichen sind. Damit sind alle ASCII-Dokumente automatisch aufwärtskompatibel zu UTF-8.
  • Ist das höchste Bit des ersten Byte 1, handelt es sich um ein Mehrbytezeichen, also ein Unicode-Zeichen mit einer Zeichennummer größer als 127.
  • Sind die höchsten beiden Bits des ersten Byte 11, handelt es sich um das Start-Byte eines Mehrbytezeichens, sind sie 10, um ein Folge-Byte.
  • Die lexikalische Ordnung nach Byte-Werten entspricht der lexikalischen Ordnung nach Buchstaben-Nummern, da größere Zeichennummern mit entsprechend mehr 1-Bits am Anfang kodiert werden.

Zu beachten:

  • Das gleiche Zeichen kann auf verschiedene Weise kodiert werden. Jedoch ist nur die jeweils kürzeste mögliche Kodierung erlaubt.
  • Ursprünglich gab es auch Kodierungen mit mehr als 4 Oktetts (bis zu 6), diese sind jedoch ausgeschlossen worden, da es in Unicode keine korrespondierenden Zeichen gibt und ISO 10646 in seinem möglichen Zeichenumfang an Unicode angeglichen wurde.


Siehe auch: UTF-7, UTF-16, UTF-32, Unicode