C# MVC Неправильная кодировка в результате потока файлов - PullRequest
0 голосов
/ 29 января 2020

Мне нужно реализовать загрузчик CSV-файлов для нашего сайта. Локально работает хорошо, но если я загружаю CSV через сайт, кодировка становится

[HttpGet("DownloadOrder/{orderID}/{forReorder}")]
public FileStreamResult DownloadQuote(int orderID, bool forReorder)
{
    var q = provider.GetDataById(Id, false);
    List<Data> datas = new List<Quote>();
    quotes.Add(q);

    //Deserialize model here 
    var memoryStream = WriteCsvToMemory(quotes);

    Response.Headers.Add("Content-Disposition", "attachment;orderdata.csv");
    Response.ContentType = "text/csv";
    return new FileStreamResult(memoryStream, "text/csv") { FileDownloadName = "orderdata.csv" };
}

public MemoryStream WriteCsvToMemory(List<Data> data)
{
    var enumerableData = new[] { data };
    var memoryStream = new MemoryStream();

    //Windows-1252
    using (var streamWriter = new StreamWriter(memoryStream, Encoding.GetEncoding(1252)))
    using (var csvWriter = new CsvWriter(streamWriter))
    {
        if (enumerableData != null)
        {
            foreach (var item in enumerableData)
            {
                csvWriter.WriteRecords(item);
            }
            csvWriter.NextRecord();
        }

        streamWriter.Flush();
        return memoryStream;
    }
}

Если я сохраняю файл locall после WriteCsvToMemory(), кодировка хороша в Excel (буквы: é, á, ű) , но после загрузки открыть его выглядит, например: �. Есть ли какое-либо решение, чтобы исправить эту проблему кодирования? Или я должен использовать внешний пакет Excel для экспорта в xls?

Спасибо.

...