Was UTF-8 ist
Jeder Text auf einem Computer wird als Zahlen gespeichert. Unicode ist die Hauptliste, die jedem Zeichen eine Nummer gibt, den Codepunkt. Der Buchstabe A ist U+0041, é ist U+00E9, ü ist U+00FC und das Eurozeichen € ist U+20AC. UTF-8 ist die Regel, nach der diese Codepunkte in Bytes umgewandelt werden.
UTF-8 ist die Standardkodierung im Web, in JSON, in den meisten Programmiersprachen und in modernen Betriebssystemen. Seine beste Eigenschaft: Einfacher ASCII-Text bleibt unverändert. A ist weiterhin das einzelne Byte 41. Andere Zeichen nutzen zwei, drei oder vier Bytes, und jedes dieser Bytes ist 128 oder größer, kann also nie mit ASCII verwechselt werden.
So nutzt du das UTF-8-Tool
Kodieren. Tippe in das Feld Text. Die UTF-8-Bytes erscheinen im Feld UTF-8-Bytes. Klicke auf Kopieren, um sie zu übernehmen.
Dekodieren. Füge Bytes in das Feld UTF-8-Bytes ein. Die Zeichen erscheinen links. Achte darauf, dass das Byte-Format zu dem passt, was du einfügst.
Byte-Format bietet sechs Arten, die Bytes zu schreiben:
- Hex-Bytes: C3 A9 zum Lesen und Debuggen
- Escapes: \xC3\xA9 für String-Literale im Code
- Prozent: %C3%A9 wie in Webadressen
- Dezimal: 195 169 für Byte-Arrays
- Binär: 11000011 10101001, um zu lernen, wie die Bits angeordnet sind
- Zeichensalat: é (Mojibake reparieren), um Text zu reparieren, der mit der falschen Kodierung gelesen wurde
Zeichen für Zeichen. Die Tabelle unter dem Tool listet jedes Zeichen mit seinem Codepunkt, seinen UTF-8-Bytes und der Anzahl der Bytes auf. Die Zusammenfassung zeigt die Gesamtzahl von Zeichen und Bytes. Leerzeichen, Tabs und Zeilenumbrüche werden benannt, damit du sie sehen kannst.
So funktioniert UTF-8
Die Anzahl der Bytes hängt von der Größe des Codepunkts ab:
| Codepunkte | 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 |
Das erste Byte sagt, wie viele Bytes folgen. Jedes folgende Byte beginnt mit 10. Dadurch ist UTF-8 selbstsynchronisierend: Ein Programm findet immer den Anfang des nächsten Zeichens, sogar mitten in einem Datenstrom.
Beispiele
| Zeichen | Codepunkt | UTF-8 hex | Dezimal |
|---|---|---|---|
A |
U+0041 | 41 |
65 |
é |
U+00E9 | C3 A9 |
195 169 |
ñ |
U+00F1 | C3 B1 |
195 177 |
ß |
U+00DF | C3 9F |
195 159 |
€ |
U+20AC | E2 82 AC |
226 130 172 |
日 |
U+65E5 | E6 97 A5 |
230 151 165 |
| Daumen-hoch-Emoji | U+1F44D | F0 9F 91 8D |
240 159 145 141 |
Die deutschen Umlaute folgen demselben Muster wie é und ß: ä ist C3 A4, ö ist C3 B6, ü ist C3 BC und Ä ist C3 84. Alle beginnen mit dem Byte C3.
Zeichensalat reparieren
Mojibake, auf Deutsch oft Zeichensalat genannt, ist das Durcheinander, das du siehst, wenn UTF-8-Bytes als Windows-1252 oder Latin-1 gelesen werden. Jedes Byte wird zu einem eigenen Zeichen, und aus Buchstaben mit zwei Bytes werden zwei seltsame Symbole. In deutschen Texten trifft es vor allem die Umlaute und das ß:
| Richtiger Text | Angezeigt als |
|---|---|
café |
café |
naïve |
naïve |
It’s |
It’s |
€ |
€ |
Grüße aus München |
Grüße aus München |
Das Format Zeichensalat macht das rückgängig. Es wandelt jedes falsche Zeichen zurück in sein Byte und dekodiert die Bytes als UTF-8. Enthält der Text Zeichen, die nicht durch diesen Fehler entstanden sein können, sagt dir das Tool das, statt zu raten.
Tipps und Grenzen
- Speichere Dateien als UTF-8. Der meiste Zeichensalat beginnt mit einer Datei, die in einer Kodierung gespeichert und in einer anderen geöffnet wurde. Wähl in Editoren beim Speichern UTF-8.
- Gib die Kodierung an. In HTML setzt du
<meta charset="utf-8">an den Anfang der Seite. - Excel und CSV-Dateien. Ältere Excel-Versionen raten die Kodierung einer CSV. Speichern als „CSV UTF-8“ vermeidet kaputte Umlaute. Das ist bei Exporten aus deutschen Programmen die häufigste Ursache für Zeichensalat.
- Reparieren funktioniert einmal. Text, der zweimal verdorben wurde, braucht die Reparatur zweimal.
- Die Tabelle zeigt bis zu 500 Zeichen, damit die Seite schnell bleibt. Die Byte-Zählung umfasst immer den ganzen Text.
Andere Wege
Python. 'café'.encode('utf-8') liefert b'caf\xc3\xa9'. Um Zeichensalat zu reparieren, liefert 'café'.encode('cp1252').decode('utf-8') wieder café.
JavaScript. new TextEncoder().encode('é') liefert die Bytes 195 und 169. new TextDecoder().decode(bytes) macht sie wieder zu Text.
Kommandozeile. echo -n é | xxd zeigt auf einem UTF-8-Terminal die Bytes c3a9. iconv -f WINDOWS-1252 -t UTF-8 wandelt ganze Dateien um.
Ähnliche Tools
Um einfache Hex-Bytes zu dekodieren, nimm Hex in Text umwandeln. Prozentkodierte Bytes in Links erledigt URL kodieren und dekodieren. Um die Bits vollständig zu sehen, probier den Binärcode Übersetzer.