MVC File下载中文乱码!!

故里有烟炊 发布于 2016/06/11 18:47
阅读 248
收藏 0
public ActionResult ExportExcel()
       {
           var sbHtml = new StringBuilder();
           sbHtml.Append("<table>");
           sbHtml.Append("<tr>");
           var lstTitle = new List<string> { "Id", "姓名", "CreateTime" };
           foreach (var item in lstTitle)
           {
               sbHtml.AppendFormat("<td>{0}</td>", item);
           }
           sbHtml.Append("</tr>");
           for (int i = 0; i < 10; i++)
           {
               sbHtml.Append("<tr>");
               sbHtml.AppendFormat("<td>{0}</td>", i);
               sbHtml.AppendFormat("<td>屌丝{0}号</td>", i);
               sbHtml.AppendFormat("<td>{0}</td>", DateTime.Now);
               sbHtml.Append("</tr>");
           }
           sbHtml.Append("</table>");
           //第一种:使用FileContentResult
           //需要将文件内容转化成字节数组byte[]
           byte[] fileContents = Encoding.Default.GetBytes(sbHtml.ToString());
           return File(fileContents, "application/ms-excel", "fileContents哈.xls");
           //第二种:使用FileStreamResult
           var fileStream = new MemoryStream(fileContents);
           return File(fileStream, "application/ms-excel", "fileStream.xls");
       }
不管使用哪种方式,Excel中都中文乱码

我看到有个这样的警告:

“((System.IO.Stream)(fileStream)).ReadTimeout”引发了“System.InvalidOperationException”类型的异常。

但是程序没有中断。

界面文件上:

<meta http-equiv="content-type" content="text/html;" charset="utf-8" />

加载中
0
舔狗
舔狗

byte[] fileContents = Encoding.Default.GetBytes(sbHtml.ToString());默认代码是什么?

这种问题主要是前台页面编码和后台传参编码不一致造成的

故里有烟炊
故里有烟炊
5252真的可以了!我折腾了好久的!十万分感谢!!!
0
故里有烟炊
故里有烟炊

引用来自“寂寞抽支烟”的评论

byte[] fileContents = Encoding.Default.GetBytes(sbHtml.ToString());默认代码是什么?

这种问题主要是前台页面编码和后台传参编码不一致造成的

改成这样:            byte[] fileContents = Encoding.UTF8.GetBytes(sbHtml.ToString());

理论可参考:http://www.360doc.com/content/11/0316/14/5482098_101636415.shtml
舔狗
舔狗
正常,我也遇到过这种,多搜索就有答案
返回顶部
顶部