Zum Hauptinhalt springen

5. UTF-8

Werden Unicode-Zeichen ins binäre übersetzt wird klar, dass diese Zahlen nicht mehr nur mit einem Byte dargestellt werden können. Beispielsweise ist dem Affen-Emoji 🐒 die Zahl 12801810128018_{10} zugewiesen, was der Binärzahl 000000011111010000010010200000001\:11110100\:00010010_{2} entspricht, also 3 Bytes Speicherplatz benötigt.

info

1 Byte

entspricht 88 Bit

1 Megabit

entspricht 10000001'000'000 Bit

1 Megabyte

entspricht 10000001'000'000 Bytes oder 80000008'000'000 Bit

UTF-8

ist ein Code, der Unicode-Zeichen in Bitmuster übersetzt. Ein Unicode-Zeichen wird mit ein bis vier Bytes (daher 8-32 bit) dargestellt. Die folgende Tabelle zeigt, wie die Codierung funktioniert:

Unicode-BereichBitmusterAnzahl BitByte 1: Anzahl Kontroll-Bits
0 bis 1270xxxxxxx71
128 bis 2047110xxxxx 10xxxxxx113
2048 bis 655351110xxxx 10xxxxxx 10xxxxxx164
ab 6553611110xxx 10xxxxxx 10xxxxxx 10xxxxxx215

Unicode-Zeichen mit einer Nummer zwischen 0 und 127 werden mit einem Byte dargestellt, welches mit 0 beginnt. Somit ist UTF-8 in diesem Bereich identisch mit ASCII (und Latin 1).

Für die anderen Zeichen wird mehr als ein Byte verwendet. Dabei beginnt jedes Byte mit einer oder mehreren 1, gefolgt von einer 0. Die Anzahl 1 im ersten Byte definieren, wie viele Bytes für das Zeichen verwendet werden. Die folgenden Bytes werden mit 10 markiert. Die x werden mit der Binärdarstellung der Unicode-Nummer aufgefüllt.

ZeichenNummerBitmuster
A6501000001
ä22811000011 10100100
Schwarze Sonne mit Strahlen ☀972811100010 10011000 10000000
Affe 🐒12801811110000 10011111 10010000 10010010

Der Vorteil dieser Codierung ist, dass anhand der ersten Bits eines Bytes erkannt wird, ob es sich um den Anfang oder die Fortsetzung eines Zeichens handelt.

BeginnBedeutung
0…ASCII-Zeichen
10…Fortsetzung eines Zeichens mit mehreren Bytes
110…Beginn eines Zeichens mit zwei Bytes
1110…Beginn eines Zeichens mit drei Bytes
11110…Beginn eines Zeichens mit vier Bytes

Dies wird noch deutlicher, wenn man dies als Binärbaum darstellt:

UTF-8 Präfix
UTF-8 Präfix

Ausprobieren

Bin Decoder

Modus

ChrDecBin
Aufgabe

Codieren Sie Ihre zwei lieblings Emojis als UTF-8 Binär-Kette. Verwenden Sie für das Herausfinden der binären Codierung die Hilfe von Python.

Mehrstufige Codierung 1

Oft werden Informationen mehrstufig codiert. So wird beispielsweise die Information «Ich bin müde.» als Emoji dargestellt. Das Handy ordnet dem Emoji die entsprechende Unicode-Nummer zu. Diese wird mit UTF-8 in eine Bitfolge übersetzt, welche über das Mobilfunknetz übermittelt wird.

Das Handy des Empfängers übersetzt die Bitfolge wieder zurück in eine Unicode-Nummer und das entsprechende Emoji. Die Interpretation des Emojis muss vom Empfänger selbst vorgenommen werden.

Unicode zu UTF-8
Unicode zu UTF-8

Footnotes

  1. Remix rothe.io