UTF-8 (Unicode Transformation Format – 8-bit) ist die dominante Zeichenkodierung für das World Wide Web, verwendet in über 98 % aller Webseiten. Sie repräsentiert effizient jedes Zeichen im Unicode-Standard – praktisch alle Schriftsysteme der Welt – und behält dabei die Rückwärtskompatibilität mit ASCII bei.
Wie UTF-8-Kodierung funktioniert
UTF-8 ist eine variabelbreite Kodierung, die ein bis vier 8-Bit-Bytes pro Zeichen verwendet:
- 1 Byte (0xxxxxxx): Deckt den ASCII-Bereich ab (U+0000 bis U+007F). Englischer Text, Zahlen und grundlegende Symbole bleiben identisch zu ASCII.
- 2 Bytes (110xxxxx 10xxxxxx): Kodiert Zeichen von U+0080 bis U+07FF, einschließlich lateinischer Erweiterung, Griechisch, Kyrillisch, Hebräisch und Arabisch.
- 3 Bytes (1110xxxx 10xxxxxx 10xxxxxx): Deckt die Basic Multilingual Plane (BMP) von U+0800 bis U+FFFF ab, umfasst die meisten chinesischen, japanischen, koreanischen (CJK) Zeichen und gängige Symbole.
- 4 Bytes (11110xxx 10xxxxxx 10xxxxxx 10xxxxxx): Repräsentiert ergänzende Ebenen (U+10000 bis U+10FFFF), wie Emoji, historische Schriften und seltene Zeichen.
Schlüsseleigenschaften, die die Verbreitung fördern
- ASCII-Rückwärtskompatibilität: Jede gültige ASCII-Datei ist eine gültige UTF-8-Datei.
- Selbstsynchronisierend: Die führenden Bits jedes Bytes geben die Sequenzlänge an, sodass ein Decoder die Ausrichtung nach Beschädigung oder mittigem Start wiederherstellen kann.
- Kein verpflichtender Byte Order Mark (BOM): Im Gegensatz zu UTF-16/32 hat UTF-8 keine Endian-Probleme; ein BOM ist optional und wird oft weggelassen.
- Allgegenwärtigkeit: Standardkodierung für HTML5, XML, JSON, E-Mail (MIME), Linux/Unix-Systeme, moderne Datenbanken und Programmiersprachen.
Vergleich mit anderen Unicode-Kodierungen
- UTF-16: Verwendet 2 oder 4 Bytes pro Code-Einheit. Natives internes String-Format in Windows, Java, JavaScript und .NET. Erfordert BOM für Endian-Erkennung.
- UTF-32: Feste 4 Bytes pro Code-Punkt. Vereinfacht Zeichenindexierung, ist aber für die meisten Texte platzineffizient.
Best Practice
Deklarieren Sie den Zeichensatz stets explizit in HTTP-Headern und Dokumentenmetadaten:
Content-Type: text/html; charset=utf-8
Dies verhindert Fehlinterpretation (Mojibake) und gewährleistet konsistente Darstellung über Browser und Plattformen hinweg.