卡拉奇

我想回老家休息!还是家里的饭饭好吃!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

asp.net mvc C# 导出csv 乱码解决方法

Posted on 2011-01-03 16:02  pic_name  阅读(2847)  评论(3)    收藏  举报

本来采用uft-8,在导出csv里出现用excel打开乱码的问题,

用 notepad打开,发现文件中的内容没有乱码,看编码是uft-8无BOM;

手动转为有BOM的uft-8后,用excel打开就正常了;

所以要导出的文件正常打开,就要导入有BOM的文件;

有BOM以0xEF;0xBB;0xBF; 开头;

C#

 byte[] buffer = System.Text.Encoding.GetEncoding("utf-8").GetBytes(str); 
            Response.AppendHeader("Content-Disposition", "attachment;filename=\"截止" + totolMonth.EndTime.ToShortDateString() + "结算报表.csv\"");
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
            byte[] outBuffer = new byte[buffer.Length + 3];
            outBuffer[0] = (byte)0xEF;//有BOM,解决乱码
            outBuffer[1] = (byte)0xBB;
            outBuffer[2] = (byte)0xBF;
            Array.Copy(buffer, 0, outBuffer, 3, buffer.Length);  
            return File(outBuffer, "application/ms-excel");

 

不过本方法只能在win里用吧,其它操作系统就不知道了。