c #, Excel + csv: ¿cómo obtener la codificación correcta?

He intentado esto durante bastante tiempo, pero no puedo entenderlo. Estoy tratando de exportar datos a Excel a través de un archivo * .csv. Funciona muy bien hasta ahora, pero tengo algunos problemas de codificación al abrir los archivos en Excel.

(cadena original a la izquierda, resultado EXCEL a la derecha):

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

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

Notepad ++ me dice que el archivo está codificado "ANSI como UTF8" (¿WTF?)

Así que aquí hay diferentes maneras en que intenté obtener un resultado válido: implementación obvia:

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

uno más sofisticado (probé probablemente una docena o más de combinaciones de codificación :)

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

y así

Código fuente completo para el método que crea los datos:

    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;

Archivo CSV generado:

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;

Respuestas a la pregunta(7)

Su respuesta a la pregunta