导出CSV文件的编码问题

时间:2019-03-19 17:38:47

标签: c# excel asp.net-mvc csv encoding

我正在使用Asp.net mvc生成CSV文件,但是我遇到了葡萄牙语中特殊字符的问题。我正在使用以下代码返回文件:

public FileContentResult RelMatriculas(RelRematriculaVM model)
{
    string fileContent = GenerateTheFile();
    Response.Charset = "utf-8";
    Response.ContentEncoding = Encoding.UTF8;
    return File(new UTF8Encoding().GetBytes(fileContent), "text/csv", "RelMatriculas.csv");
}

我将utf8设置为编码,但是当保存文件并尝试在Excel中打开文件时,我看到的是垃圾字符,而不是特殊字符。

如果我只是在记事本中打开文件并保存,然后在excel上再次打开,则可以正确显示字符。我是否缺少将文件输出为UTF8的内容?

1 个答案:

答案 0 :(得分:3)

问题是Excel需要BOM。来自this SO answer

var data = Encoding.UTF8.GetBytes(fileContent);
var result = Encoding.UTF8.GetPreamble().Concat(data).ToArray();
return File(result, "text/csv", "RelMatriculas.csv");