Probleme mit einem FileStream (Einlesen einer Datei)
-
Hallo,
ich habe Probleme mit dem einlesen eines Files! Prinzipiell funktioniert das ganz gut, jedoch gibt es Probleme mit Sonderzeichen wie ä,ö,ü,° .... Muß ich den BinaryReader nehmen, oder gibt es irgend eine andere Lösung die mir die Zeichen korrekt einliest?
FileStream fs = new FileStream(openFileDialogLoad.FileName, FileMode.Open, FileAccess.Read); StreamReader sr = new StreamReader(fs);
MfG
T.D
-
Du musst das korrekte Encoding wählen.
Kann, afaik, beim Reader übergeben werden.
Simon
-
Noch eine Sache: Dateiströme sind unmanaged-Ressourcen, d.h. sie müssen explizit wieder freigegeben werden, insbesondere auch, wenn eine Ausnahme geworfen wird. Damit dies garantiert geschieht, sollte man sie *ausschließlich* in einem 'using'-Block verwenden.
-
Hallo!
Danke für den Tipp mit dem Encoding. Nach langer Diskussion und Probe einiger Zeichensätze (UTF7,ASCII,Unicoe ...) war ich fast am verzweifeln! Doch dann habe ich Default ausprobiert, und habe das gewünschte Ergebnis erzielt!
StreamReader sr = new StreamReader(fs,System.Text.Encoding.Default);
Jetzt hat sich aber noch eine Frage für das Verständnis ergeben! Es wird nun die aktuelle ANSI-Codepage des Systems abgerufen. Was heisst das genau? Habe ich nun den Text Systemunabhängig eingelesen?? Heisst daß, das die Anzeige nun überall stimmen müsste??
MfG
Thomas D.
-
Hi,
die ANSI-Codepage ist je nach Systemsprache verschieden. In Mitteleuropa ist das z.B. eine andere als in Nordamerika, Osteuropa, und Asien. In Mitteleurope ist das die Codepage 1252, d.h. wenn Du sichergehen willst, dass *diese* (Statt der System-Codepage) verwendet wird, dann kannst Du statt 'Encoding.Default' folgendes schreiben:
StreamReader sr = new StreamReader(fs,System.Text.Encoding.GetEncoding(1252));