Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
faecher:informatik:oberstufe:codierung:utf8:start [13.10.2021 16:33] – [ASCII – American Standard Code for Information Interchange] Mareike Nutz | faecher:informatik:oberstufe:codierung:utf8:start [21.09.2022 19:37] – [Beispiele:] sbel | ||
---|---|---|---|
Zeile 29: | Zeile 29: | ||
Welche der obigen Wörter würden mit den griechischen Zeichensatz falsch dargestellt werden und warum? | Welche der obigen Wörter würden mit den griechischen Zeichensatz falsch dargestellt werden und warum? | ||
+ | |||
+ | ===== Unicode | ||
+ | |||
+ | Um Probleme, die sich zum einen mit unterschiedlichen Zeichensätzen, | ||
+ | |||
+ | < | ||
+ | Unicode | ||
+ | (Wikipedia, https:// | ||
+ | </ | ||
+ | |||
+ | Im Unicode Standard hat jedes Zeichen einen eigenen " | ||
+ | |||
+ | 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// |