我已经编写了一个下载函数,用于将消息下载到CSV文件中(代码如下)。现在当我在记事本或记事本++中打开它时,我看到的是这样的:
é NY ø ╬ ║► ░ ê ö
(顺便说一句,这就是数据库中的内容)
现在,当我在Ms-Excel中打开它时,它显示为:
é NY ø ╬ ║► ░ ê ö
当我在notepad++中打开它时,它显示为“UTF8 without BOM”编码。当我在notepad++中将其编码为UTF-8时,一切都正常(也就是说,Excel也显示正确的字符)。
但是,我该如何确保从我的代码创建的文件是UTF-8?
这是我的代码:
é NY ø ╬ ║► ░ ê ö
(顺便说一句,这就是数据库中的内容)
现在,当我在Ms-Excel中打开它时,它显示为:
é NY ø ╬ ║► ░ ê ö
当我在notepad++中打开它时,它显示为“UTF8 without BOM”编码。当我在notepad++中将其编码为UTF-8时,一切都正常(也就是说,Excel也显示正确的字符)。
但是,我该如何确保从我的代码创建的文件是UTF-8?
这是我的代码:
public ActionResult DownloadPersonalMessages()
{
StringBuilder myCsv = new StringBuilder();
myCsv.Append(new DownloadService().GetPersonalMessages());
this.Response.ContentType = "text/csv";
Response.AddHeader("content-disposition", "attachment; filename=PersonalMessages.csv");
Response.ContentEncoding = Encoding.UTF8;
Response.Write(myCsv.ToString());
Response.Flush();
Response.HeaderEncoding = Encoding.UTF8;
return Content("");
}
编辑:
我的函数现在返回一个ByteArray
,其中包含以下转换
UTF8Encoding encoding = new UTF8Encoding();
return encoding.GetBytes(str);
现在我的下载速度是这样的:
Response.AddHeader("Content-Disposition", "attachment; filename=PersonalMessages.csv");
return File(new DownloadService().GetPersonalMessages(), "text/csv");
text/csv
,请参见此处(如果您想更精确,请使用:text/csv; charset=utf-8
,请参见此处)。 - Ofir