8-Bit Unicode Transformation Format
Das 8-Bit Unicode Transformation Format / UTF-8 ist die am weitesten verbreitete Kodierung für Unicode-Zeichen. Dabei wird jedem Unicode-Zeichen eine besonders kodierte Bytekette von variabler Länge zugeordnet. UTF-8 unterstützt bis zu vier Byte, auf die sich wie bei allen UTF-Formaten alle Unicode-Zeichen abbilden lassen.
UTF-8 wurde als Alternative zu UTF-16 entwickelt und stellt jedes Zeichen durch 8 Bit bzw. ein Byte dar. Dabei werden die US-ASCII-Zeichen (7 Bit) wie bisher durch ein Byte dargestellt, deren oberstes Bit 0 ist. Alle anderen Unicode-Zeichen werden durch zwei bis vier Byte lange Byte-Ketten dargestellt. Damit gibt es keinen unmittelbaren Zusammenhang mehr zwischen der Anzahl Byte und der Anzahl Zeichen einer Datei.
UTF-8 hat eine zentrale Bedeutung als globale Zeichenkodierung im Internet und ist inzwischen die meist genutzte Unicode-Anwendung. Die Internet Engineering Task Force verlangt von allen neuen Internetkommunikationsprotokollen, dass die Zeichenkodierung deklariert wird und dass UTF-8 eine der unterstützten Kodierungen ist. Das Internet Mail Consortium / IMC empfiehlt, dass alle E-Mail-Programme UTF-8 darstellen und senden können.
Auch bei dem in Webbrowsern verwendeten HTML setzt sich UTF-8 zur Darstellung von länder- und sprachspezifischen Zeichen zunehmend durch und ersetzt die vorher benutzten HTML-Sonderzeichen.
Verwendung
Zeichen | ISO 8859-1 (Latin1) | Unicode (UTF-8) | URL | |||
---|---|---|---|---|---|---|
Dezimal | Oktal | Dezimal | Oktal | Hexadez. | ||
Ä | 196 | 304 | 303 204 | C3 84 | %C3%84 | |
ä | 228 | 344 | 303 244 | C3 A4 | %C3%A4 | |
Ö | 214 | 326 | 303 226 | C3 96 | %C3%96 | |
ö | 246 | 366 | 303 266 | C3 B6 | %C3%B6 | |
Ü | 220 | 334 | 303 234 | C3 9C | %C3%9C | |
ü | 252 | 374 | 303 274 | C3 BC | %C3%BC | |
α | 316 261 | CE B1 | ||||
(Zeilenumbruch) | \n | 0A | ||||
(nichts) | \0 | 00 | ||||
Unklar, ob folgende stimmen: | ||||||
(Leerzeichen) | 0000 | %00%00 | ||||
/ | 2215 | %22%15 | ||||
( | 0028 | %00%28 | ||||
) | 0029 | %00%29 | ||||
Ausgabe der UTF-8-Kodierung des Zeichens "α" (Alpha aus dem griechischen Alphabet). Im Beispiel wird für das Zeichen "α" die (hexadezimale) UTF-8-Kodierung "ceb1" (also genau umgekehrt wie von "echo" ausgegeben; dezimal: 316 261, hier ist die Reihenfolge wie angezeigt). Danach folgt noch ein Zeilenumbruch ("0a") und nichts weiter ("00"). Zu beachten ist natürlich, dass das verwendete Terminal auch tatsächlich auf die Anzeige von UTF-8 eingestellt ist! Der entsprechende Code Point für die Darstellung als Zeichen in HTML lautet "03b1".
$ echo α | od -xc 0000000 b1ce 000a 316 261 \n \0 0000003
Dieselbe Ausgabe, aber ohne von "echo" an die Ausgabe angehängten Zeilenumbruch.
$ echo -n α | od -xc 0000000 b1ce 000a 316 261 0000002
Anzeige von UTF-8 Zeichen in Codepoint hex-Darstellung.
$ echo 'UTF-8 ist schön' | preconv -r UTF-8 ist sch\[u00F6]n
Umwandlung des Wertes "FC" von Hexadezimal zu Dezimal (252) mit "bc".
$ echo "ibase=16; FC" | bc 252
Umwandlung des Wertes "334" von Oktal zu Dezimal (220) mit "bc".
$ echo "ibase=8; 334" | bc 220
Umwandlung einer Datei mit Zeichensatz Latin1 zu Zeichensatz UTF-8.
$ iconv -f latin1 -t utf-8 latin1.txt > utf8.txt
Weblinks
Herausgeber | Sprache | Webseitentitel | Anmerkungen |
---|---|---|---|
Wikipedia | ger | UTF-8wbm | Enzyklopädischer Artikel |
ger | UTF-8-Codetabelle mit Unicode-Zeichenwbm | Anmerkung: der Unicode Codepoint ist gelb hinterlegt, der UTF-8-Code ist rot hinterlegt. |