UTF8不能在Excel中工作

在我使用的.NET代码

byte[] bytesToSend = System.Text.Encoding.UTF8.GetBytes(partialtorender); 

然后m写它擅长

在“北印度语”语言的文本是在生成的Excel中来的胡言乱语,你可以请build议做什么?

 System.IO.MemoryStream memStr = new System.IO.MemoryStream(); memStr.Write(bytesToSend, 0, bytesToSend.Length); memStr.Position = 0; FileStreamResult result1 = new FileStreamResult(memStr, "application/ms-excel"); Response.AddHeader("content-disposition", "attachment; filename=" + "newExcelSheet" + ".xls"); return result1; 

尝试发出一个UTF-8序言,指出正确的编码到Excel。 另外.xls是一个专有的二进制格式。 你不能像你的代码一样使用stringvariables。

以下是CSV文件导出的示例:

 public ActionResult Index() { var csv = "मानक हिन्दी;some other value"; var data = Encoding.UTF8.GetBytes(csv); data = Encoding.UTF8.GetPreamble().Concat(data).ToArray(); var cd = new ContentDisposition { Inline = false, FileName = "newExcelSheet.csv" }; Response.AddHeader("Content-Disposition", cd.ToString()); return File(data, "text/csv"); } 

您的问题可能是XLS文件的默认编码不是 UTF-8。 请保存你得到的文件,并根据这个post打开它: 当你打开一个文件时select一个编码标准这是否解决了你的问题?

经过很多的努力,我find了解决办法。 如果你看看xls文件的文本,你会发现它不是一个格式良好的html,无论如何,excel处理它。 但是我认为我应该让excel知道它是utf-8。 所以我用:

 Response.Write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>"); 

在写下其余的stream之前,它确实起作用!