J'utilise une technique de another Stack Overflow question pour écrire un fichier CSV à la sortie Response
pour un utilisateur à ouvrir/enregistrer. Le fichier semble bon dans le Bloc-notes, mais quand je l'ouvre dans Excel les caractères accentués sont garbage. J'ai supposé que c'était quelque chose à voir avec l'encodage de caractères, donc j'ai essayé de le régler manuellement sur UTF-8 (la valeur par défaut pour StreamWriter
). Voici le code:Pourquoi la sortie de ma réponse StreamWriter produit-elle des accents de vidage dans Excel mais semble correcte dans le Bloc-notes?
// 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();
Toutes les idées ce que je devrais faire pour coder correctement le fichier si Excel peut afficher les caractères accentués?
Merci Ron! J'ai utilisé Encoding.UTF8.GetString (Encoding.UTF8.GetPreamble()) pour écrire cela au début du fichier, a travaillé un régal alors. –