8-Bit Unicode Transformation Format

Aus Mikiwiki
Zur Navigation springen Zur Suche springen

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

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".

Zeichen hexadezimal dezimal
α ceb1 316 261
[Zeilenumbruch] 0a \n
[nichts] 00 \0
$ 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
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
Unklar, ob folgende stimmen:
(Leerzeichen) 0000 %00%00
/ 2215 %22%15
( 0028 %00%28
) 0029 %00%29

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.