Entwickler-Ecke

IO, XML und Registry - File.AppendText schreibt nicht in UTF8?


Fortuna18 - Di 25.09.12 10:26
Titel: File.AppendText schreibt nicht in UTF8?
Hallo,

ich folgende Aufgabe wurde mir gegeben:

Verzeichnis nach Dateien durchsuchen -> Bestimmte Dateien einlesen -> Eingelesene Dateien nach bestimmten Mustern durchsuchen -> Gefundene Treffer ersetzen -> Datei abspeichern

Das ganze wird in IronDelphi realisiert, aber da ich ja auf .NET zugreife, denke ich, dass das Thema hier nicht ganz falsch ist. Die o.g. Aufgabe stellt für mich kein Problem dar, jetzt ist aber ein Problem aufgetaucht undzwar das Encoding der abgespeicherten Dateien. In einigen Dateien werden Umlaute benutzt und wenn diese nicht in UTF-8 abgespeichert werden, treten Fehler auf (jetzt nicht in meinem Problem, sondern in anderen Programmen, die die Dateien verwenden).

Das Anlegen und Abspeichern der neuen Datei habe ich so realisiert:
1. Temporäre Datei mit .tmp erstellen
2. StreamWriter-Objekt erstellen mit File.AppendText(Datei)
3. Original-Datei einlesen
4. Einfügen der Zeilen der Originaldatei in die temporäre Datei
5. Beenden der Aktion mit .Flush() und .Close()

In der Dokumentation steht das File.AppendText() einen UTF8-codierten Text an die Datei anfügt, aber die Dateien sind definitiv nicht UTF8 codiert.

Weiß jemand Rat?

Gruß


Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Di 25.09.2012 um 10:35


Ralf Jansen - Di 25.09.12 12:22

File.AppendText erzeugt definitiv einen utf-8 StreamWriter. Vielleicht ist die Interpretation der Byte Order in dem ominösen anderen Programm einfach anders?