Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:codierung:utf8:start [28.11.2023 10:01] – [Unicode] Frank Schiebel | faecher:informatik:oberstufe:codierung:utf8:start [28.11.2023 11:25] (aktuell) – gelöscht Frank Schiebel | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Zeichendarstellung mit Unicode und UTF-8 ====== | ||
- | |||
- | |||
- | ===== Unicode | ||
- | |||
- | Um Probleme, die sich zum einen mit unterschiedlichen Zeichensätzen, | ||
- | |||
- | < | ||
- | Unicode | ||
- | (Wikipedia, https:// | ||
- | </ | ||
- | |||
- | Im Unicode Standard hat jedes Zeichen einen eigenen " | ||
- | |||
- | <callout type=" | ||
- | Frage: Wie kann man die " | ||
- | </ | ||
- | |||
- | Die Zeichen des Zeichensatzes werden wiederum auf unterschiedliche Weisen codiert, beispielsweise in Betriebssystemen. Wir betrachten die UTF-8 Kodierung von Unicode Zeichen genauer. | ||
- | |||
- | ===== UTF-8 Implementation des Unicode Zeichensatzes ===== | ||
- | |||
- | |||
- | Hier kann ein einzelnes Zeichen in der UTF-8-Codierung bis zu 4 Bytes umfassen, nach folgenden Regeln: | ||
- | |||
- | * Ist die Binärdarstellung des Unicode-Codes nicht länger als ein Byte und das das erste Bit eine 0, werden die restlichen 7 Bit gemäß des ASCII Codes verwendet, die 128 verbleibenden Möglichkeiten entsprechen also genau dem ASCII-Code. | ||
- | * Ist die Binärdarstellung des Unicode-Codes länger als ein Byte oder der Code ist ein Byte lang und beginnt mit einer '' | ||
- | |||
- | ==== Beispiele: ==== | ||
- | |||
- | **(1)** | ||
- | |||
- | '' | ||
- | |||
- | Beginnt mit einer Null und ist nicht länger als ein Byte -> die letzten 7Bit werden verwendet, um zu codieren, also ein "ASCII k" in UTF-8 | ||
- | |||
- | **UTF-8: 0110 1011** | ||
- | |||
- | |||
- | | ||
- | |||
- | '' | ||
- | |||
- | Nur ein Byte lang, beginnt aber mit einer '' | ||
- | |||
- | '' | ||
- | |||
- | * Das zweite Byte beginnt nach den Regeln mit '' | ||
- | * Das erste Byte beginnt mit '' | ||
- | |||
- | Die UTF-8 Codierung des Unicode-ä ist also '' | ||
- | |||
- | **(3)** | ||
- | |||
- | {{: | ||
- | |||
- | '' | ||
- | |||
- | * 16 Bit Daten zu codieren, dafür braucht man 3 Byte ( 3 x 6 = 18) | ||
- | * Der UTF-8 Code beginnt also mit der Startsequenz '' | ||
- | * Dann von rechts beginnend 6 Bit (01 000), das Byte beginnt mit 10 (Regel) also ist das dritte Byte '' | ||
- | * Die nächsten 6 Bit analog: | ||
- | * Die fehlenden 4 Bit '' | ||
- | |||
- | Die UTF-8 Codierung des Unicode-Zeichens 乔 ist also 3 Byte lang und sieht so aus: '' | ||
- | |||
- | ---- | ||
- | {{: | ||
- | === (A3) === | ||
- | |||
- | Wandle die nachfolgenden Zeichen des Unicode Zeichensatzen in die UTF-8-Codierung um. Der Hexadezimalcode des Unicode Zeichens ist jeweils angegeben. | ||
- | |||
- | Gehe jeweils wie in den Beispielen oben vor. Markiere die " | ||
- | |||
- | - '' | ||
- | - '' | ||
- | - '' | ||
- | - '' | ||
- | |||
- | ---- | ||
- | |||
- | ++++ Lösung 1 | | ||
- | 0**1001001**, | ||
- | ++++ | ||
- | ++++ Lösung 2 | | ||
- | 110**00011** 10**010110** | ||
- | ++++ | ||
- | ++++ Lösung 3 | | ||
- | 1110**0101** 10**111100** 10**001000** | ||
- | ++++ | ||
- | ++++ Lösung 4 | | ||
- | 1111**0000** 10**011111** 10**011000** 10**001010** | ||
- | ++++ | ||
- | |||
- | |||
- | ---- | ||
- | {{: | ||
- | === (A4) === | ||
- | |||
- | Wie viele unterschiedliche Unicode-Zeichen lassen sich theoretisch mit 1 Byte, 2 Bytes, 3 Bytes und 4 Bytes unter Beachtung der UTF-8-Regeln darstellen? | ||
- | |||
- | ++++ Lösung | | ||
- | * 1 Byte: 7 nutzbare Bits -> 2< | ||
- | * 2 Bytes: 5+6 = 11 nutzbare Bits -> 2< | ||
- | * 3 Bytes: 4+6+6 = 16 nutzbare Bits -> 2< | ||
- | * 4 Bytes: 3+6+6+6 = 21 nutzbare Bits -> 2< | ||
- | ++++ | ||
- | |||
- | ==== Material ==== | ||
- | |||
- | {{simplefilelist> | ||
- | |||
- | |||
- | |||
- | |||
- | ---- | ||
- | //CC-BY-SA Frank Schiebel, mit Material von Kimmig, ZPG Informatik BW// |