Frage

Ich verwende eine Technik von eine andere Stack-Überlauf Frage eine CSV-Datei mit dem Response Ausgabe für einen Benutzer schreiben nach Öffnen / Speichern. Die Datei sieht gut aus in Notepad, aber wenn ich es in Excel öffnen die akzentuierte Zeichen sind Müll. Ich nahm an, dies war etwas mit der Zeichenkodierung zu tun, also habe ich versucht, ihn manuell zu UTF-8 (die Standardeinstellung für StreamWriter) einstellen. Hier ist der Code:

// This fills a list to enumerate - each record is one CSV line
List<FullRegistrationInfo> fullUsers = GetFullUserRegistrations();

context.Response.Clear();
context.Response.AddHeader("content-disposition",
                           "attachment; filename=registros.csv");
context.Response.ContentType = "text/csv";
context.Response.Charset = "utf-8";

using (StreamWriter writer = new StreamWriter(context.Response.OutputStream))
{
    for (int i = 0; i < fullUsers.Count(); i++)
    {
        // Get the record to process
        FullRegistrationInfo record = fullUsers[i];

        // If it's the first record then write header
        if (i == 0)
            writer.WriteLine(Encoding.UTF8.GetString(
                Encoding.UTF8.GetPreamble()) + 
                "User, First Name, Surname");

        writer.WriteLine(record.User + "," +
                         record.FirstName + "," +
                         record.Surname);
    }
}

context.Response.End();

Alle Ideen, was sonst würde ich es richtig tun müssen, um die Datei codieren, um Excel die akzentuierte Zeichen anzeigen kann?

War es hilfreich?

Lösung

Sie müssen möglicherweise einen UTF-8-Indikatoren genannt schreiben Byte-Reihenfolge Mark der Anfang der Ausgabe Excel über die UTF-8ness zu benachrichtigen. Dumme Excel.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top