Frage zu UTF8-Codierung < Technische Inform. < Praktische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 16:02 Sa 19.01.2008 | Autor: | RalU |
Aufgabe | Ich habe da eine Frage zur UTF8-Codierung.
Und zwar habe ich folgende Zeichen (hexadezimal) gegeben:
C0 A1
Liegt eine gültige UTF8-Codierung vor? |
Ok, binär umgewandelt ergibt sich ja
1100 0000 1010 0001
Wäre formal ja eine korrekte UTF8-Codierung.
Allerdings ist sie ungültig, weil es auch einfacher zu kodieren ginge (Woran erkennt man es denn eigentlich, dass sie einfacher zu kodieren wäre?).
Weiterhin frage ich mich nun, wie man das denn jetzt einfacher codiert, damit da eine gültige UTF-8 codierung rauskommt.
Wer hat dazu eine Idee?
Gruß, Ralf
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 15:38 So 20.01.2008 | Autor: | Gubbel |
Grundsätzlich darf in UTF ein Zeichen nicht einfacher kodierbar sein; zum Beispiel das <!> ASCII = 0x21
Die UTF-8 Kodierung lautet hierfür: 0010 0001
Dieses Zeichen ist also mit 1 Byte kodierbar. Falls es fälschlicherweise mit 2 Bytes kodiert wird, lautet die Kodierung 1100 0000 1010 0001, also genauso wie in Deiner Aufgabe.
Grundsätzlich werden die ersten 128 Zeichen in einem Byte kodiert. Diese entsprechen dem ASCII.
Eine falsche Kodierung mit 2 Bytes führt dazu, daß die 5 Bits des ersten Bytes ab der 3 Stelle 0 sind. Damit ist jede Kodierung der Art 1100 000x 10xx xxxx fehlerhaft.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 12:14 Mo 21.01.2008 | Autor: | RalU |
Also wäre eine korrekte UTF-8 Codierung von meiner Aufgabe
(C0 A1) demnach
0010 0001
Oder kann man gar keine korrekte Codierung für (C0 A1) angeben?
|
|
|
|