I am trying to export to a .csv
file in UTF-8 encoding with semicolon as delimiter character:
context.Response.Clear();
context.Response.ClearHeaders();
context.Response.ClearContent();
context.Response.AppendHeader("content-disposition", string.Format("attachment; filename={0}", GetFileName(...)));
context.Response.ContentType = "Application/csv";
var encoding = Encoding.UTF8;
context.Response.ContentEncoding = encoding;
context.Response.BinaryWrite(encoding.GetPreamble());
context.Response.Output.Write("sep=;"); // tell Excel to interpret semicolon as separator
//csv file content creation here (using context.Response.Output.WriteLine)
context.Response.Flush();
context.Response.End();
The problem is that lines:
context.Response.BinaryWrite(encoding.GetPreamble());
context.Response.Output.Write("sep=;");
don't work properly together:
Using only first line I can resolve issue with encoding, when Excel displays Unicode characters like ÐБ ОРÐ. But without second line Excel displays all data in the first column.
Could you help me to understand how to force Excel to use UTF-8 encoding and ;
as a separator?