Zum Hauptinhalt springen

Unicode & UTF-8

Der ASCII-Code verwendet 7 Bits pro Zeichen. Damit kann man 128 verschiedene Zeichen darstellen. Das reicht gerade für die lateinischen Zeichen, Ziffern und ein paar weitere Zeichen. Umlaute wie ä, ö und ü können damit schon nicht mehr codiert werden. Deshalb wurden bald Varianten des ASCII-Code mit 8 Bits entwickelt. Damit können nun 256 verschiedene Zeichen dargestellt werden.

Auf der Welt gibt es aber viele verschiedene Schriften und noch viel mehr verschiedene Zeichen. Deshalb wurde 1991 das 👉 Unicode Consortium mit dem Ziel gegründet, eine weltweit einheitliche Tabelle aller darstellbaren Zeichen zu erstellen.

Die Unicode-Tabelle

Das Ergebnis der Arbeit des Unicode-Consortiums ist die 👉 Unicode-Tabelle, die stetig erweitert wird. In Ihrer Version 16.0 umfasst die Tabelle bereits 155'063 Zeichen1.

Unicode-Tabelle kennenlernen

Wie bei ASCII hat auch auf der Unicode-Tabelle jedes Zeichen eine Zahl. Einen solchen Eintrag bezeichnet man als Codepoint.

Suchen Sie in der 👉 Unicode-Tabelle nach den folgenden Codepoints und kopieren Sie das jeweilige Zeichen in das dazugehörige Antwortfeld.

Codepoint 65

Schauen Sie sich nochmal den Codepoint 65 an. Was fällt Ihnen auf?

Codieren

Sie können die Zahl 6565 auch mal binär oder hexadezimal darstellen...

Laden...
Laden...

Die UTF-8 Codierung

Die ASCII-Codierung funktioniert relativ einfach: Wenn man z.B. das Zeichen K codieren will, sucht man es einfach auf der Tabelle und nimmt dann die binäre Darstellung seiner Zahl: 01001011201001011_2.

Wie Sie gelernt haben, codiert man jedes ASCII-Zeichen als eine 8 Bit lange Binärzahl. Das reicht, um 128 (eigentlich sogar 256) verschiedene Zeichen zu codieren.

Würde man das gleiche Prinzip nun für die Unicode-Tabelle und ihre bislang 155'063 Zeichen anwenden, bräuchte man pro Zeichen deutlich mehr Bits.

Bit-Länge für Unicode

Wie viele Bits brauchen wir, wenn wir mindestens 155'063 verschiedene Zeichen codieren wollen?

Lösungshinweise finden Sie auch im nachfolgenden Text, aber überlegen Sie trotzdem zuerst selbst 😉.

Laden...
Laden...

Bedenken Sie zudem, dass die Unicode-Tabelle immer noch wächst. Eine vernünftige Grösse wäre somit vermutlich eher 24 Bit pro Unicode-Zeichen, damit wir noch genügend Reserve haben.

Damit bräuchte aber jeder Text sofort 3x so viel Speicherplatz wie mit ASCII – und das, obwohl die meisten Texte ja mehrheitlich aus ASCII-Zeichen (und nicht z.B. aus Emojis) bestehen. Das ist nicht sehr effizient.

Die Lösung: Eine Zeichencodierung für die Unicode-Tabelle namens UTF-8. Sie wird in diesem Video sehr gut erklärt:

UTF-8 codieren

Wie lautet der binäre UTF-8 Code für das Emoji mit dem Unicode-Codepoint 129440129440? Sie finden ihn, indem Sie den Codepoint in der Unicode-Tabelle suchen, das Ergebnis anklicken, etwas herunterscrollen und dort auf Codierung (engl.: Encoding) klicken. Kopieren Sie den Wert ins Eingabefeld und kontrollieren Sie Ihre Antwort.

⭐️ Aufgaben zur Codierung

Lösen Sie diese Aufgaben von Hand, indem Sie das UTF-8-Codierungsverfahren anwenden, wie es im Video gezeigt wird.

Aufgabe 1

Gegeben ist der Unicode-Codepoint für den Buchstaben Q in binärer Form: 00000000 01010001.

Codieren Sie diesen Codepoint mit UTF-8. Machen Sie zur besseren Lesbarkeit nach jeweils 8 Bit einen Leerschlag.

Aufgabe 2

Gegeben ist der Unicode-Codepoint für den Buchstaben ö in binärer Form: 00000000 11110110.

Codieren Sie diesen Codepoint mit UTF-8. Machen Sie zur besseren Lesbarkeit nach jeweils 8 Bit einen Leerschlag.

Aufgabe 3

Gegeben folgender Unicode Codepoint binärer Form: 00100110 01100101.

Codieren Sie diesen Codepoint mit UTF-8. Machen Sie zur besseren Lesbarkeit nach jeweils 8 Bit einen Leerschlag.

Aufgabe 4

Gegeben ist der Unicode für das Emoji 💩 in binärer Form: 1 11110100 10101001.

Codieren Sie diesen Codepoint mit UTF-8. Machen Sie zur besseren Lesbarkeit nach jeweils 8 Bit einen Leerschlag.

Aufgabe 5

Geben Sie den binären Unicode-Codepoint an, der diesem UTF-8 Code entspricht: 11100010 10000010 10101100.

Schreiben Sie den Codepoint mit 16 binären Stellen auf und machen Sie zur besseren Lesbarkeit nach jeweils 8 Bit einen Leerschlag.

Footnotes

  1. 👉 https://en.wikipedia.org/wiki/List_of_Unicode_characters