Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » ifstream - encoding und Umlaute - Textdatei erkennen?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
24.05.2005, 10:18 Uhr
miketech



Hi zusammen,

ich lese mit ifstream eine Textdatei ein, Zeile für Zeile mittels getline. Soweit kein Problem. Nun möchte ich gerne Umlaute erkennen. Das Problem ist, dass ich nicht weiß, welche Kodierung die Datei hat, dies kann sich manchmal unterscheiden (UTF oder ISO-8859-15). Wie kann ich das abfragen?

Außerdem möchte ich im Programm Umlaute innerhalb der Datei erkennen. Das funktioniert natürlich nur dann halbwegs gut, wenn ich weiß, um welches Encoding es sich handelt. Ich bin schon soweit, dass ich mit unsigned char arbeiten muss. Aber manchmal ist ein ä eben etwas um die 190 und mal um die 220.

Ist es irgendwie möglich rauszufinden, ob es sich bei der Datei um eine Textdatei handelt?

Wäre für Tipps dankbar.

Gruß

Mike

Dieser Post wurde am 24.05.2005 um 10:18 Uhr von miketech editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
24.05.2005, 10:29 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat von miketech:
Hi zusammen,

ich lese mit ifstream eine Textdatei ein, Zeile für Zeile mittels getline. Soweit kein Problem. Nun möchte ich gerne Umlaute erkennen.



ein hehres Ziel


Zitat von miketech:
Das Problem ist, dass ich nicht weiß, welche Kodierung die Datei hat, dies kann sich manchmal unterscheiden (UTF oder ISO-8859-15). Wie kann ich das abfragen?


Tja, wenn Du es selbst nicht weisst, wer sollte es dann wissen? - XML geht zB so vor, daß es in einer der ersten Zeilen vermerkt, welches Encoding benutzt wird. Wenn Du das nicht machst, wirst Du vermutlich nicht in der Lage sein, das Encoding zu erraten.


Zitat von miketech:
Außerdem möchte ich im Programm Umlaute innerhalb der Datei erkennen. Das funktioniert natürlich nur dann halbwegs gut, wenn ich weiß, um welches Encoding es sich handelt. Ich bin schon soweit, dass ich mit unsigned char arbeiten muss. Aber manchmal ist ein ä eben etwas um die 190 und mal um die 220.

Bei UTF-8 liegen zwar die Escapecode für die Umlaute fest, aber wenn Du nicht UTF-8 hast, sonderen eben so eine einfach 7-Bit ASCII Codierung plus einer beliebigen 8 Bit Codepage, dann kann es sein, daß es garkeinen Umlaut gibt und die Zeichen zwischen 190 und 220 was ganz anderes darstellen.


Zitat von miketech:
Ist es irgendwie möglich rauszufinden, ob es sich bei der Datei um eine Textdatei handelt?

Nur über Heuristiken. Du könntest zB Buchstabenhäufigkeiten messen. Bei ausreichend langen Dateien kann man dann sogar eine Zuordnung zwischen numerischen Zeichencode und tatächlichen Buchstabencode statistisch ermitteln. Wobei hier natürlich Grenzen gesetzt sind:
Buchstabenhäufigkeiten unterscheiden sich nicht nur nach Sprache: Deutsche texte zu speziellen Fachgebieten mögen auch nochmals in den Häufigkeitsverteilungen divergieren.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 24.05.2005 um 10:30 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
24.05.2005, 10:31 Uhr
virtual
Sexiest Bit alive
(Operator)


Nachtrag: Wenn Du nur die Unterscheidung zu treffen hast UTF-8 oder ISO-8859-15: ja das sollte gehen.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: