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. |