C# StreamWriter mit UTF-8

Mossos

Ensign
Registriert
Juni 2008
Beiträge
152
Moin zusammen!

Es sollte eigentlich nen einfaches Problem sein, aber irgendwie will es bei mir nicht funktionieren..

Ich versuche eine Liste von String mit nem StreamWriter in eine Datei schreiben. Da in den Strings auch Umlaute zu finden sind, sollten sie ja auch in UTF-8-Format geschrieben werden.
Hier ist also mein Code dazu:
Code:
List<String> file = externeStringListe;

FileStream fs = new FileStream(path.FullName, FileMode.Create);                
StreamWriter sw = new StreamWriter(fs);

foreach (String file in list)
{
     sw.WriteLine(file, System.Text.Encoding.UTF8);
}
sw.Close();
fs.Close();
( Normalerweise natürlich nen Try-Catch-Block drum ;) )

So, hab ich mir gedacht sollte der auch die Umlaute vernünftig schreiben. Tut er allerdings nicht...für nen ö z.B. kommt dann sowas: ö


Hat jemand ne Idee, wie ich das lösen könnte?


Weihnachtlichen Gruß ;)
Mossos
 
Ist die Datei, die du einliesen willst, auch UTF-8 codiert?
 
Vermutlich liegt es daran, dass Strings im .NET Framework immer UTF-16 codiert sind.
Wenn du nicht auf UTF-8 in der Datei festgelegt bist, würde ich einfach die Angabe des Encodings weglassen und damit UTF-16 in die Datei schreiben.
 
Also ich lese nur über nen fileBrowser Dateinamen aus. Die Dateinamen kommen dann als Strings in eine Liste, die dann auch in einem Fenster angezeigt werden.Die Umlaute werden dort ganz normal angezeigt.

@TheCadillacMan:
Ich hab erst
sw.WriteLine(file);
versucht. Das hat aber auch nicht funktioniert.
 
Ooh..ja klappt mit Encoding.Default...dann wirds aber auch ohne Angabe klappen..
also zumindest wenn man das in nem Texteditor öffnet..

Ich kann die Liste in meinem Programm auch als Exceldokument speichern, also .csv
Wenn ich die Datei dann mit Excel öffne werden die Umlaute komischerweise nicht vernünftig angezeigt. irgendwie seltsam..
Jemand ne Ahnung wieso? Kann ich da überhaupt was machen?
 
Wenn du ö siehst, dann müsste die Datei in UTF-8 kodiert sein aber dein Leseprogramm denkt es wäre ANSI oder ISO 8859.

Es wäre mal einen Versuch Wert die Textdatei in einem Browser wie Firefox zu öffnen und dort als Encoding UTF 8 auszuprobieren.
 
Wenn ich die Datei dann mit Excel öffne werden die Umlaute komischerweise nicht vernünftig angezeigt.
Also wenn ich ein paar Dateipfade mit Umlauten als .csv speichere (StreamWriter + Encoding.Default) dann klappt es wunderbar. Excel (2003) zeigt alles so an wies sein soll.

Vllt. liegts an deiner Excel/MS Office Version?
 
Wenn ich die txt im InternetExplorer öffne werden die Umalute auch nicht richtig angezeigt.
Hab Office 2007 installiert.

Wenn ich die Datei über Öffnen in selber Excel öffne, gibts dort ja eine Vorschau, wo man auch die Kodierung auswählen kann. Also wenn ich da UTF-8 auswähle werden die Umlaute dann natürlich vernünftig angezeigt. Komisch, dass Excel das nicht automatisch erkennt.. :/
 
Zurück
Oben