Evg*_*vin 1 csv asp.net-mvc encoding
我使用下一个代码从我的日志表生成.csv文件.
public ActionResult Index()
{
var records = loggingService.GetLogRecords(model.Since, model.For);
var mainSb = new StringBuilder();
mainSb.Append("Date,User name\n");
foreach (var logRecord in records)
{
mainSb.Append(logRecord.Time.ToString("dd/MM/yyyy hh:mm:ss")).Append(",");
mainSb.Append("\"").Append(logRecord.UserName ?? "").Append("\"").Append(",");
}
return File(Encoding.Unicode.GetBytes(mainSb.ToString()), "text/csv", string.Format("logs.csv"));
}
Run Code Online (Sandbox Code Playgroud)
用户名包含西里尔字符,当我打开我的.csv文件时 - 显示的是西里尔字符.我也尝试使用UTF8和UTF32编码.我应该使用Whan编码还是应该做哪些更改?
Dar*_*rov 12
您可以将UTF-8与前导码一起使用.最后尝试这样:
var data = Encoding.UTF8.GetBytes(mainSb.ToString());
var result = Encoding.UTF8.GetPreamble().Concat(data).ToArray();
return File(result, "text/csv", "logs.csv");
Run Code Online (Sandbox Code Playgroud)
此外,您似乎正在使用\n哪个不是Windows上正确的新行分隔符,并且您似乎没有在foreach循环中追加新行,因此所有内容都将位于同一行,从而导致CSV文件无效.拜托,请不要滚动你自己的CSV解析器.