Textdatei mit Umlauten einlesen
-
Hallo,
mein Problem ist wenn ich eine Textdatei einlese die Umlaute aufweist, werden die erstens anders dargestellt und sind zweitens nicht eindeutig unterscheidbar.
Meine Einleseschleife:while(csfSourceFile.ReadString(csLine) == TRUE)
"ÄäÜüÖöß" wird während des Einlesevorgangs zu "ÃäÃüÃöÃ"
Generell wäre das kein Problem, mit:
while(csLine.Find(_T("ü")) != -1) { int iUmlaut = csLine.Find(_T("ü")); csLine.SetAt(iUmlaut, _T('ü')); csLine.Delete(iUmlaut + 1, 1); }
kann ich so nach den entsprechenden Zeichen suchen und diese ersetzen. ABER die Zeichen sind nicht eindeutig unterscheidbar. Ä,Ö,Ü und ß werden leider alle nur mit "Ã" dargestellt.
Hat jemand eine Lösung für dieses Problem?
-
Stichworte: Encoding, Unicode, UTF8, ...
Mit der WinAPI-Funktion MultiByteToWideChar kannst du den Text entsprechend umwandeln, s. z.B. http://stackoverflow.com/questions/2318481/utf-8-cstring-and-cfile-c-mfc
Für MFC hat sich jemand die Mühe gemacht und eine entspechende Klasse geschrieben: http://www.codeproject.com/Articles/4119/CStdioFile-derived-class-for-multibyte-and-Unicode
Und hier steht, wie du es selbst mit CStdioFile lösen kannst: http://www.codeproject.com/Tips/465194/Read-and-Write-Text-Files-in-Unicode-through-CStdi
-
Genau das hab ich gesucht, vielen Dank.
Hab mich für die dritte Variante entschieden. Arbeitet fehlerfrei!