www.matheraum.de
Das Matheforum.
Das Matheforum des MatheRaum.

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Mathe
  Status Schulmathe
    Status Primarstufe
    Status Mathe Klassen 5-7
    Status Mathe Klassen 8-10
    Status Oberstufenmathe
    Status Mathe-Wettbewerbe
    Status Sonstiges
  Status Hochschulmathe
    Status Uni-Analysis
    Status Uni-Lin. Algebra
    Status Algebra+Zahlentheo.
    Status Diskrete Mathematik
    Status Fachdidaktik
    Status Finanz+Versicherung
    Status Logik+Mengenlehre
    Status Numerik
    Status Uni-Stochastik
    Status Topologie+Geometrie
    Status Uni-Sonstiges
  Status Mathe-Vorkurse
    Status Organisatorisches
    Status Schule
    Status Universität
  Status Mathe-Software
    Status Derive
    Status DynaGeo
    Status FunkyPlot
    Status GeoGebra
    Status LaTeX
    Status Maple
    Status MathCad
    Status Mathematica
    Status Matlab
    Status Maxima
    Status MuPad
    Status Taschenrechner

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Mathe-Seiten:Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenSonstiges - InformatikFrage zu UTF8
Foren für weitere Studienfächer findest Du auf www.vorhilfe.de z.B. Astronomie • Medizin • Elektrotechnik • Maschinenbau • Bauingenieurwesen • Jura • Psychologie • Geowissenschaften
Forum "Sonstiges - Informatik" - Frage zu UTF8
Frage zu UTF8 < Sonstige < Schule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Sonstiges - Informatik"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Frage zu UTF8: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 21:13 Sa 25.11.2006
Autor: Phoney

Hallo Leute.

Ich beschäfitge mich derzeit etwas mit UTF 8.
Habe da auch gleich mal einige Fragen, u. a. habe ich mir den Wikipedia-Artikel durchgelesen:

http://de.wikipedia.org/wiki/Utf8

Da steht dann nun für die Anzahl der Möglichkeiten (Kodierung), dass es für 1 Byte ^7 Möglichkeiten gibt,
2 Byte [mm] 2^{11}-2^7 [/mm]
3 byte [mm] 2^{16}-2^{11} [/mm]

Ich dachte jetzt,a dass man immer guckt, was war die größte Zweierpotenz - vorher war es ja 2^11, dann zieht man beim nächsten byte eben [mm] 2^{11} [/mm] ab.  Ausnahmsweise stimmt es, bei
1) 4Byte ist es aber [mm] 2^{20} [/mm] Möglichkeiten, warum?



2) Sind das eigentlich die Gesamtmöglichkeiten, weil da steht ja auch: In Klammern jeweils die theoretisch maximal möglichen.
Kann ich also bei 2 Byte jetzt [mm] 2^{11} [/mm] Möglichkeiten haben und bezieht sich diese [mm] 2^{11}-2^7 [/mm] nur auf die Anzahl der Möglichkeiten, die man zu der 1Byte Kodierung mehr hat?



Ich habe da auch gleich mal eine hypothetische Frage

3) Wenn in einer Datei, die UTF-8 kodierte Zeichen speichert, ein Byte durch eine fehlerhafte Festplatte ungültig wird, kann man dann den unbeschädigten Teil der Datei noch dekodieren?  
Wahrscheinlich ja schon, nur ist mir der Grund dafür nicht ganz klar (und ich finde dazu auch leider nichts). Wenn man das noch dekodieren kann, dann vermutlich auch nur die bytes, die in Ordnug sind, oder?


Wäre sehr nett, wenn mir da jemand mal etwas zu erzählen würde.


Viele Grüße
Johann



        
Bezug
Frage zu UTF8: Antwort
Status: (Antwort) fertig Status 
Datum: 22:38 Sa 25.11.2006
Autor: Martin243

Hallo,

oft kann man diese Art von Fragen nur mit einem "so ist eben der Standard definiert" beantworten. Schauen wir mal genauer hin:

> Ausnahmsweise stimmt es, bei
> 1) 4Byte ist es aber [mm] 2^{20} [/mm] Möglichkeiten, warum?

Nun, es gäbe tatsächlich [mm] $2^{21} [/mm] - [mm] 2^{16}$ [/mm] Möglichkeiten, aber man hat den UTF-8-Raum beschränkt:
"... in seiner Verwendung als UTF-Kodierung ist er aber auf den gemeinsamen Coderaum aller Unicode-Kodierungen beschränkt, also von 0 bis 0010 FFFF (1.114.112 Möglichkeiten)..."

> Kann ich also bei 2 Byte jetzt [mm] 2^{11} [/mm] Möglichkeiten haben und bezieht
> sich diese [mm] 2^{11}-2^7 [/mm] nur auf die Anzahl der Möglichkeiten, die man zu
> der 1Byte Kodierung mehr hat?

Nun, wenn du dich an diesen Standard halten willst, dann kannst du nicht. Wenn du alle [mm] 2^{11} [/mm] Möglichkeiten nutzt, dann stößt du auf das Problem der mehrdeutigen Kodierung, das auch in der Quelle beschrieben ist. Als Beispiel:
In einer Datenbank sind alle Buchstaben "a" (fälschlicherweise) kodiert als 11000001 10100001. Nun liest ein Programm die Daten aus, verarbeitet sie, korrigiert dabei die Kodierung und schreibt sie wieder mit den richtigen "a"s (01100001) zurück. Nun vergleicht ein Prüfprogramm, ob die alten und die neuen Daten noch übereinstimmen und überschlägt sich, weil sich die alten und neuen "a"s unterscheiden! Katastrophe!

Also: Immer schön an den Standard halten, auch wenn dabei etwas Speicherplatz verloren geht. Es hat schon seinen Sinn.


> 3) Wenn in einer Datei, die UTF-8 kodierte Zeichen speichert, ein Byte
> durch eine fehlerhafte Festplatte ungültig wird, kann man dann den
> unbeschädigten Teil der Datei noch dekodieren?  

Ja.
Wir können uns mal überlegen, was für Fehler typischerweise auftreten können.
1.) Es können einzelne Bytes verschwinden.
2.) Es können zufällige Bytes eingestreut werden.
3.) Es können einzelne Bytes verfälscht werden.

Dazu nehmen wir mal an, wir hätten folgende Daten in UTF-8 (größere Pausen zwischen einzelnen Zeichen):
11001101 10011101   11101101 10110101 10001010   00111010

1.)
a) Plöztlich verschwindet bei der Übertragung das erste Byte:
... 10011101   11101101 10110101 10001010   00111010

Das dekodierende Programm liest direkt zu Anfang ein mit 10 beginnendes Byte und weiß, dass das ein Folgebyte ist, zu dem anscheinend das Startbyte fehlt. Also wird dieses Byte übersprungen und das zweite Byte fängt mit 11 an, also ist dies ein Startbyte. Dieses Zeichen fängt also schon mal gültig an. Da es sogar mit 1110 anfängt, müssen zwei Bytes mit 10 am Anfang folgen. Sie tun es, alles ok. Dann fängt das letzte Byte mit 00 an, also muss dies ein ASCII-Zeichen sein. Das ist auch gültig. Also wurde als gültig gelesen:
11101101 10110101 10001010   00111010


b) Hier verschwindet das vierte Byte:
11001101 10011101   11101101 ... 10001010   00111010

Das erste 2-Byte-Zeichen wird korrekt gelesen. Nun fängt mit 1110 ein 3-Byte-Zeichen an. Das Programm liest das erste Byte, das zweite (eigentlich schon das dritte) Byte und erwartet ein drittes Byte, das mit 10 anfängt, findet aber ein Byte mit 00 am Anfang vor. Also verwirft es die eben gelesenen zwei Bytes und liest das aktuelle als gültiges ASCII-Zeichen. Ergebnis:
11001101 10011101   00111010


2.) Wenn ein Byte zufällig eingefügt wird, dann taucht an einer unpassenden Stelle ein falscher Code auf. Entweder erwartet das Programm ein Startbyte und findet ein Folgebyte. Dann überspringt es dieses Folgebyte, bis es ein Startbyte findet.
Oder aber es erwartet ein Folgebyte und findet ein Startbyte. Dann verwirft es die bereits gelesenen Bytes und fängt mit einem neuen Zeichen an.


3.) Wenn einzelnen Bytes verändert werden hat es je nach Fall ganz ähnliche Auswirkungen.


Jedenfalls können die "defekten" Zeichen immer übersprungen werden, weil sie als unvollständig erkannt werden. Oder sie werden falsch gelesen. Aber für die folgenden Zeichen hat dies keine Auswirkungen, weil sie alle ihre eigenen Startbytes haben, so dass ein verwirrtes Programm immer nur nach dem nächsten Startbyte suchen muss. Eine tolle Erfindung, auch wenn sie etwas Speicherplatz kostet.


Gruß
Martin

Bezug
                
Bezug
Frage zu UTF8: Danke
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 18:40 So 26.11.2006
Autor: Phoney

Hallo Martin243!

Das war eine tolle Antwort. Super! Vielen dank dafür!

Viele Grüße v.
Johann

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Sonstiges - Informatik"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.matheforum.net
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]