c#, Excel + csv): wie man die richtige Kodierung?

Ich habe versucht, dies für eine Weile jetzt, aber es kann nicht herausfinden. Ich versuche den export der Daten in Excel über ein *.csv-Datei. Es funktioniert soweit Super, aber ich habe einige encoding-Probleme beim öffnen der Dateien in Excel.

(ursprüngliche Zeichenfolge auf der linken Seite, EXCEL-Ergebnis auf der rechten Seite):

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

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

Notepad++ sagt mir, dass die Datei codiert ist "ANSI as UTF8"(WTF?)

So, hier sind verschiedene Möglichkeiten, die ich habe versucht, ein gültiges Ergebnis:
offensichtlich Umsetzung:

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

mehr anspruchsvolle eine (versuchte wohl ein Dutzend oder mehr Codierung Kombinationen:)

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

und so weiter

Gesamte Quellcode für die Methode der Erstellung der Daten:

    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;

Generierten CSV-Datei:

Dümme Mössäng
Testmessung die erste

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

InformationsquelleAutor yas4891 | 2010-07-27

Schreibe einen Kommentar