Wie funktioniert die UTF-8-Kodierung?

Antwort vom

UTF-8 kodiert jeden Unicode-Skalarwert als Folge von einem bis vier Bytes und ist dabei mit ASCII kompatibel.

Unicode legt die Nummer eines Zeichens fest, den Codepunkt. UTF-8 bestimmt, wie diese Nummer als Bytes gespeichert wird.

Aufbau der Bytes

Die folgende Tabelle zeigt die Bitmuster. Jedes x steht für ein Bit des Codepunkts.

Codepunktbereich Bytes Bitmuster
U+0000 bis U+007F 1 0xxxxxxx
U+0080 bis U+07FF 2 110xxxxx 10xxxxxx
U+0800 bis U+FFFF* 3 1110xxxx 10xxxxxx 10xxxxxx
U+10000 bis U+10FFFF 4 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

Ausgenommen sind die Surrogat-Codepunkte U+D800 bis U+DFFF. Sie dürfen nicht in UTF-8 kodiert werden. Außerdem muss immer die kürzeste mögliche Bytefolge verwendet werden.

Bei Mehrbytefolgen zeigt die Anzahl führender Einsen im ersten Byte die Gesamtlänge an. Alle Folgebytes beginnen mit 10; die übrigen Bits enthalten den Zahlenwert des Codepunkts. ASCII-Zeichen behalten unverändert ihre bisherigen Bytewerte.

Beispiel: „ä“ kodieren

Nach diesem Schema ergibt sich für ä mit dem Codepunkt U+00E4:

  1. Der Zahlenwert lautet binär 11100100.
  2. Für das Zweibyte-Schema auf elf Nutzbits auffüllen: 00011 100100.
  3. In das Muster einsetzen: 11000011 10100100.
  4. Hexadezimal ergibt das die Bytes C3 A4.

Der wichtige Unterschied: Die „8“ bedeutet acht Bits pro Codeeinheit, nicht acht Bits pro Zeichen. Deshalb benötigt beispielsweise „ä“ zwei Bytes.

Quellen:

Kategorie: Computer

Erstellt mit GPT-6.1 Sol (OpenAI) auf Basis einer aktuellen Websuche.