Was sind UTF-8 und Unicode? Codepunkte, Byte-Codierung und warum sich UTF-8 durchsetzte
Veröffentlicht am 11.3.2026 · 3 Min. Lesezeit · Entwickler-Tools
Daniel Okonkwo — Front-end-Entwickler und Tech-Redakteur bei OneKitly
Web-Performance · Dateiformate
Anhand von 2 Quellen geprüft
Unicode ist ein einziger Katalog, der jedem Zeichen eine Zahl namens Codepunkt gibt, geschrieben wie U+0041 für A oder U+1F600 für ein Smiley. UTF-8 ist eine Regel, diese Zahlen als Bytes zu speichern: Codepunkte bis U+007F belegen ein Byte, größere zwei, drei oder vier Bytes. UTF-8 setzte sich durch, weil es abwärtskompatibel mit ASCII ist, keine Byte-Reihenfolge-Mehrdeutigkeit hat und englischen Text kompakt hält, während es jede Schrift der Welt darstellt.
Unicode weist jedem Zeichen einen Codepunkt zu; UTF-8 codiert diese Codepunkte in ein bis vier Bytes. So funktioniert es und warum es die Alternativen schlug.
Codepunkte gegenüber Bytes
Es hilft, zwei Ideen zu trennen. Ein Codepunkt ist eine abstrakte Zahl, die ein Zeichen im Unicode-Katalog identifiziert, unabhängig von der Speicherung. Eine Codierung ist das konkrete Rezept, das diese Zahl in Bytes auf der Platte oder der Leitung verwandelt. Unicode definiert derzeit Codepunkte von U+0000 bis U+10FFFF, mehr als eine Million Plätze, von denen etwa 150.000 belegt sind.
Die U+-Notation ist nur Hexadezimal, Basis 16. U+0041 ist dezimal 65, der Buchstabe A, und U+20AC ist dezimal 8.364, ein Währungssymbol. Zwischen Hex und Dezimal oder Binär umzurechnen ist genau die Art Basiswechsel, die ein Basisumrechner erledigt, und so prüft man von Hand, welches Bytemuster ein Codepunkt erzeugen soll.
Ein bis vier Bytes, nach Größe entschieden
UTF-8 ist eine Codierung variabler Länge. Codepunkte von U+0000 bis U+007F, der ursprüngliche ASCII-Bereich, werden in einem einzigen Byte gespeichert, dessen oberstes Bit null ist, sodass einfacher englischer Text Byte für Byte mit alten ASCII-Dateien identisch ist. Codepunkte von U+0080 bis U+07FF belegen zwei Bytes, U+0800 bis U+FFFF drei und alles bis U+10FFFF, samt der meisten Emoji, vier.
Das führende Byte kündigt die Länge über seine hohen Bits an: eine Zwei-Byte-Folge beginnt mit 110, drei Byte mit 1110, vier Byte mit 11110, und jedes Fortsetzungsbyte beginnt mit 10. Dieses selbstbeschreibende Muster erlaubt einem Decoder, sich nach einem beschädigten Byte neu zu synchronisieren, und macht es unmöglich, ein Fortsetzungsbyte mit dem Beginn eines Zeichens zu verwechseln.
Warum UTF-8 die Alternativen schlug
Die Hauptrivalen waren UTF-16 und UTF-32. UTF-32 speichert jeden Codepunkt in festen vier Bytes, einfach zu indizieren, aber verschwenderisch, was gewöhnlichen englischen Text vervierfacht. UTF-16 nutzt zwei oder vier Bytes und beherrschte einst Windows und Java, braucht aber eine Byte-Reihenfolge-Markierung, um zu sagen, welches Ende zuerst kommt, und verwendet für große Codepunkte weiterhin Surrogatpaare, was die variable Länge wieder einführt, die es vermeiden wollte.
UTF-8 vermeidet all das. Es hat eine kanonische Byte-Reihenfolge, braucht keine Markierung und bleibt byte-kompatibel mit der riesigen Basis vorhandener ASCII-Werkzeuge, sodass eine UTF-8-Datei voll einfachem Englisch in Software korrekt öffnet, die älter als Unicode ist. Diese praktischen Vorzüge, kein Gremienbeschluss, machten es zum Standard des Webs, wo es heute die überwältigende Mehrheit der Seiten abdeckt.
Häufige Fragen
- Ist UTF-8 dasselbe wie Unicode?
- Nein. Unicode ist der Katalog, der jedem Zeichen einen Codepunkt zuweist. UTF-8 ist eine Art, diese Codepunkte als Bytes zu codieren. Unicode sagt, welche Zahl es ist; UTF-8 sagt, wie man sie speichert.
- Wie viele Bytes verbraucht ein Emoji in UTF-8?
- Die meisten einzelnen Emoji liegen über U+FFFF und belegen vier Bytes. Manche sichtbaren Emoji sind eigentlich mehrere Codepunkte, verbunden durch Nullbreiten-Verbinder, sodass sie auf der Platte weit mehr Bytes belegen können, als ein Zeichen vermuten lässt.
- Warum zeigt mein Text verstümmelte Zeichen wie é?
- Das ist eine Fehlpaarung: als UTF-8 geschriebene Bytes werden als Ein-Byte-Codierung wie Latin-1 gelesen, sodass eine Zwei-Byte-Folge als zwei falsche Zeichen erscheint. Deklariere und lies die Datei an beiden Enden als UTF-8, um es zu beheben.
- Macht UTF-8 Dateien für nicht-englischen Text größer?
- Manchmal. Sprachen mit lateinischer Schrift bleiben nahe einem Byte pro Zeichen, aber Schriften wie Chinesisch oder Japanisch nutzen drei Bytes pro Zeichen in UTF-8 gegenüber zwei in UTF-16. Für gemischten oder überwiegend lateinischen Inhalt ist UTF-8 insgesamt meist am kompaktesten.
Artikel, die dich interessieren könnten
Alle Ratgeber →Ähnliche Tools
Quellen
Hast du einen Fehler in diesem Artikel entdeckt?