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 [13.10.2021 15:24] – [Beispiele:] sbel | 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 ====== | ||
- | ===== ASCII – American Standard Code for Information Interchange ===== | ||
- | |||
- | |||
- | {{ : | ||
- | |||
- | In der [[: | ||
- | |||
- | In einem früheren, hauptsächlich in Amerika benutzten Standard waren lediglich die Zeichen von 0 bis 127 definiert, das letzte, achte Bit wurde zur Fehlerüberprüfung verwendet. Erst später wurde das 8. Bit dazu genommen, um weitere Zeichen, wie z.B. die deutschen Umlaute codieren zu können. | ||
- | |||
- | |||
- | ---- | ||
- | {{: | ||
- | === (A1) === | ||
- | |||
- | Wandle die nachfolgenden Wörter, die in Hexadezimal-Darstellung vorliegen, in lesbaren Text um: | ||
- | |||
- | - '' | ||
- | - '' | ||
- | - '' | ||
- | |||
- | Mit einer 8-Bit-Codierung lassen sich nicht mehr Zeichen darstellen, was insbesondere bei anderen Sprachen – wie z.B. griechisch – andere Codierungen nötig machte. Da in diesen Sprachen jedoch die bei uns gebräuchlichen Umlaute nicht benötigt werden, wurde der durch das 8. Bit hinzugekommene Block vom Zeichen 128 bis 255 für die dortigen Zeichen verwendet. Diese und andere länderspezifischen Codierungen lassen sich z.B. unter https:// | ||
- | |||
- | ---- | ||
- | {{: | ||
- | === (A2) === | ||
- | |||
- | 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 rechst 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** | ||
- | ++++ | ||
- | |||
- | ---- | ||
- | //CC-BY-SA Frank Schiebel, mit Material von Kimmig, ZPG Informatik BW// |