CSV文件编码导出问题

5

我正在使用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
使用带有BOM的编码可能会有所帮助: new UTF8Encoding(true),或者只需使用Encoding.UTF8即可。 - tukaef
https://stackoverflow.com/questions/21898462/exporting-data-to-csv-from-controller - Alexei Levenkov
1个回答

15

问题在于Excel希望有BOM。来自这个SO答案:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接