31. März 2011

dotnet StreamReader - Fehlende Umlaute beim Lesen von Dateien

Folgendes Problem:
Beim Einlesen einer Textdatei mit dem Streamreader-Objekt gehen die deutschen Umlaute verloren. :-o


Der Grund hierfür ist, dass vom System als Standard die Codierung UTF-8 angenommen wird.


Doch die Lösung dazu ist schnell gefunden:
Aus dem bislang folgenden Code zum Einlesen:


StreamReader ^stream = gcnew StreamReader(filename);
while (strLine = stream->ReadLine())
{
      // work
}

dann genügt es, die Initialisierung des StreamReader-Objekts um einen weiteren Parameter zu ergänzen, der die richtige Kodierung aktiviert:

StreamReader ^stream = gcnew StreamReader(filename, System::Text::Encoding::Default);



Bei C# Code ist das Übliche zu beachten: aus gncew wird new, aus :: und -> ein Punkt und die ^ werden weggelassen ;)

Keine Kommentare: