Wie funktioniert die UTF-8-Kodierung?
Antwort vomUTF-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:
- Der Zahlenwert lautet binär 11100100.
- Für das Zweibyte-Schema auf elf Nutzbits auffüllen: 00011 100100.
- In das Muster einsetzen: 11000011 10100100.
- 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:
Erstellt mit GPT-6.1 Sol (OpenAI) auf Basis einer aktuellen Websuche.