Warum kommt der Stream Response-Ausgabe produzieren Müll Akzente in Excel, aber gut aussehen in Notepad?
-
19-09-2019 - |
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?
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.