Was ist UTF-8? Einfach erklärt!
UTF-8, oder Unicode Transformation Format – 8 Bit, ist eine weltweit verbreitete Zeichencodierung, die bis zu 1.112.064 Zeichen unterstützt. Es wurde entwickelt, um die Abwärtskompatibilität mit ASCII zu gewährleisten und mehr Zeichen zu enthalten als der ISO 8859-Standard, den es ersetzt. UTF-8 ist abwärtskompatibel zu 7-Bit-ASCII; jede gültige ASCII-Zeichenkette ist auch eine gültige UTF-8-Zeichenkette, sodass die meisten für ASCII geschriebenen Programme leicht an UTF-8 angepasst werden können.
Die wichtigsten Vorteile von UTF-8 sind seine Schnelligkeit, Flexibilität und Effizienz, alle wichtigen Webbrowser unterstützen es, was ein wichtiger Faktor für seinen Erfolg ist. Durch die Kompatibilität zu älteren Standards findet UTF-8 Einsatz in den neuesten Computerstandards, Technologien und Dokumenttypen. Durch die Verwendung dieses Standards kann Text auf fast jedem Gerät oder jeder Plattform korrekt dargestellt werden, ohne dass er im Vergleich zu anderen Codierungen zu viel Speicherbedarf oder Ressourcen beansprucht.
Was sind die wichtigsten Eigenschaften von UTF-8?
Mit UTF-8 kann jeder Codepunkt im Unicode-Codierraum dargestellt werden. So können Glyphen aus praktisch jeder Sprache oder jedem Zeichensatz wiedergegeben werden. UTF-8 ist eine Multi-Byte-Zeichencodierung (MBCS), die doppelt breit dargestellte Zeichen statt in zwei Bytes lediglich in einem Byte darstellen kann. Es verwendet eine variable Codierung zwischen 1 bis zu 4 Byte, wobei 1 Byte 8 Bit entspricht. Dadurch wird erheblich weniger Speicher verbraucht.
Es ist mit alten Systemen kompatibel, die nur ASCII verwenden können, da die ersten 128 Zeichen in UTF-8 und ASCII im englischen Zeichensatz identisch sind. So kann in beide Richtungen codiert werden. Da UFT-8 aber mehr Platz bietet als ASCII, besteht für zukünftige Änderungen am Unicode-Standard noch ausreichend Platz, diese zu implementieren.
Wie funktioniert UTF-8?
UTF-8 ist ein Multi-Byte-Codierungsschema. Das bedeutet, dass jedem Zeichen ein oder mehrere Bytes zugeordnet sind, um das Zeichen zu identifizieren. Wenn ein Text codiert wird, wird jedes Zeichen durch die entsprechende Sequenz von Bytes repräsentiert, je nach seinem Codepunkt im Unicode-Standard.
Um ein Zeichen in UTF-8 zu codieren, wird zunächst der Codepunkt des Zeichens bestimmt und dann eine Anzahl von Bytes in der Codepage zugewiesen, die vom Bereich des Codepunkts abhängt. Danach wird jeder Byte-Wert nach einem bestimmten Muster festgelegt, das für die Darstellung von Unicode-Codepunkten mit 8 Bit entwickelt wurde. All diese Schritte stellen sicher, dass alle Zeichen, die zwischen Systemen übertragen werden, mit der UTF-8-Codierung korrekt dargestellt werden.
Die Entwicklung von UTF-8
Vor der Entwicklung von UTF-8 wurde lange Zeit nur der amerikanische ASCII-Standard (American Standard Code for Information Interchange) verwendet, da die Computertechnik zu Beginn rein englischsprachig funktionierte. Aufgrund verschiedener Probleme, die nach und nach auftraten, wurde erstmals im September 1992 der UTF-8-Standard eingeführt und hat sich seitdem zum Standardformat für die Übertragung von Unicode-Zeichen in praktisch allen Webseiten und E-Mails entwickelt. Alles in allem hat UTF-8 bemerkenswerte Fortschritte bei der Unterstützung von Unicode gemacht, sodass immer mehr Websites auf dieses effizientere und effektivere Zeichencodierungssystem umsteigen.
Probleme vor der Einführung von UTF-8
Der früher dominierende ASCII-Standard verwendet aus historischen Gründen lediglich die letzten 7 Bit eines Bytes. Dadurch lassen sich lediglich 128 Zeichen darstellen, was für die englischsprachige Codierung ausreichend war. Damit auch andere Sprachen und Zeichensätze verwenden zu können, wurde ASCII mit mehreren ANSI-Zeichensätzen modifiziert, die z. B. kyrillische oder westeuropäische Zeichen ergänzten. Diese nutzten das komplette Byte und konnten somit 256 Zeichen darstellen. Allerdings waren die ANSI-Zeichensätze untereinander inkompatibel, was wiederum eine einheitliche internationale Codierung erforderlich machte.
Es wurden dann zunächst die Standards UTF-16 und UTF-32 entwickelt. Bei UTF-32 werden für jedes Zeichen 32 Bit bzw. 4 Byte verwendet, egal, ob diese benötigt werden oder nicht. So wird bei Zeichensätzen, die lediglich die ersten 128 Zeichen benötigen, unnötig viel Speicherplatz verwendet. UTF-16 findet heute noch Verwendung bei der Codierung nicht-lateinischer Zeichensätze, da die meisten Zeichen sich damit in 2 Byte darstellen lassen. Es wurde als Darstellungsformat im Apple macOS und in Microsoft Windows verwendet.
Codierung von UTF-8
Struktur von UTF-8
Der Unicode-Standard basiert auf Codepoints, die einzelnen Zeichen oder Zeichenteilen entsprechen. Unicode weist jedem Codepoint eine Nummer zu, legt aber nicht fest, wie diese codiert werden muss. Hierfür ist das Unicode-Transformationsformat zuständig. UTF-8 wurde entwickelt, um die gesamte Bandbreite der Unicode-Zeichen zu verarbeiten, einschließlich derjenigen, die in nicht-lateinischen Sprachen vorkommen.
UTF-8 codiert jedes Zeichen mit einer Folge von 1 bis 4 Bytes für jedes Zeichen und reserviert das erste Byte einer Multi-Byte-Folge, um anzugeben, aus wie vielen Bytes das Zeichen besteht, von eins bis vier. ASCII-Zeichen werden zum Beispiel in einem Byte gespeichert, während CJK-Zeichen (Chinesisch, Japanisch oder Koreanisch) in zwei oder drei Bytes gespeichert werden. Mit diesem Codierungssystem können alle 2 Millionen möglichen Unicode-Zeichen bequem gespeichert werden. Die verfügbaren Bytes werden wie folgt verwendet:
- 1. Byte: Umfasst die ersten 128 Zeichen und entspricht ASCII
- 2. Byte: Zwei Bytes werden zur Codierung der folgenden 1.920 Zeichen benötigt. Diese umfassen die Alphabete, die auf lateinischer Schrift basieren und die Alphabete für Hebräisch, Arabisch, Kyrillisch und Griechisch.
- 3. Byte: Ein drittes Byte wird für die Alphabete der Sprachen Chinesisch, Japanisch, Koreanisch benötigt
- 4. Byte: Mit dem vierten Byte werden historische Schriftzeichen, mathematische Symbole und Emoji codiert.
Umrechnung Unicode zu UTF-8
UTF-8 kann in Zeichenketten als Oktett aus 1 und 0, also binär, dargestellt werden. Das erste Bit stellt die Kennziffer dar und signalisiert die verwendete Länge. Wenn das erste Bit eine 0 ist, wird nur ein Byte für das Zeichen verwendet. Wenn mehrere Bytes verwendet werden, beginnt das erste Byte mit 11. So kann mit diesem Byte kein anderes Zeichen mit nur einem Byte dargestellt werden. Die Anzahl der 1er zu Beginn zeigt auch die Anzahl der zu verwendeten Bytes an. 110xxxxx steht für 2 Byte, mit 1110xxxx werden 3 Byte verwendet und mit 11110xxx 4 Byte.
Zeichen | UTF-8, binär | Unicode, hexadezimal | Unicode, binär |
U | 01010101 | U+0055 | 00000000 01010101 |
T | 01010100 | U-0054 | 00000000 01010100 |
F | 01000110 | U+0046 | 00000000 01000110 |
– | 00101101 | U+002D | 00000000 00101101 |
8 | 00111000 | U+0038 | 00000000 00111000 |
ä | 11000010 10101110 | U+00E4 | 00000000 11100100 |
€ | 11100010 10000010 10101100 | U+20AC | 00100000 10101100 |
UFT-8 im Word Wide Web
Im Allgemeinen lassen sich alle Webseiten und E-Mails in allen bekannten Zeichenstandards codieren und übertragen. Allerdings enthalten E-Mails und HTML-Daten einige Meta-Daten, die die verwendete Codierung aufzeigen, damit der Empfänger die Inhalte wieder korrekt decodieren kann. Allerdings funktioniert dies nicht immer problemlos. Um diese Beeinträchtigungen zu vermeiden, empfehlen sowohl das Internet-Mail Consortium (IMC) als auch das Word Wide Web Consortium (W3C) die Verwendung von UTF-8 als einheitliche Codierung. Damit können unnötige Konvertierungen und Kompatibilitäts- und Darstellungsprobleme vermieden werden.