C #, Excel + CSV: как получить правильную кодировку?

Я уже давно пытаюсь это сделать, но не могу понять. Я пытаюсь экспортировать данные в Excel через файл * .csv. Пока он отлично работает, но у меня есть некоторые проблемы с кодированием при открытии файлов в Excel.

(исходная строка слева, результат EXCEL справа):

Messwert(µm / m) ==> Messwert(µm / m)

Dümme Mässöng ==> Dümme Mässöng

Notepad ++ говорит мне, что файл закодирован "ANSI как UTF8" (WTF?)

Итак, вот несколько способов, которыми я пытался получить достоверный результат: очевидная реализация:

tWriter.Write(";Messwert(µm /m)");

более сложный (пробовал, наверное, десяток или более комбинаций кодирования :)

tWriter.Write(Encoding.Default.GetString(Encoding.Unicode.GetBytes(";Messwert(µm /m)")));
tWriter.Write(Encoding.ASCII.GetString(Encoding.Unicode.GetBytes(";Messwert(µm /m)")));

и так далее

Весь исходный код для метода, создающего данные:

    MemoryStream tStream = new MemoryStream();
    StreamWriter tWriter = new StreamWriter(tStream);
    tWriter.Write("\uFEFF");

    tWriter.WriteLine(string.Format("{0}", aMeasurement.Name));
    tWriter.WriteLine(aMeasurement.Comment);
    tWriter.WriteLine();
    tWriter.WriteLine("Zeit in Minuten;Messwert(µm / m)");

    TimeSpan tSpan;
    foreach (IMeasuringPoint tPoint in aMeasurement)
    {
        tSpan = new TimeSpan(tPoint.Time - aMeasurement[0].Time);
        tWriter.WriteLine(string.Format("{0};{1};", (int)tSpan.TotalMinutes, getMPString(tPoint)));
    }

    tWriter.Flush();
    return tStream;

Созданный файл CSV:

Dümme Mössäng
Testmessung die erste

Zeit in Minuten;Messwert(µm / m)
0;-703;
0;-381;
1;1039;
1;1045;
2;1457;
2;1045;

Ответы на вопрос(7)

Ваш ответ на вопрос