以前把表格到处为.csv文件,没有注意文件编码格式,今天发现自己到处的.csv文件不能用excel打开。
于是发现.csv文件编码格式没有写入,windows 文本文件的开头有两字节表示文件的编码。
///参考:http://www.websina.com/bugzero/kb/unicode-bom.html
byte[] btyeUTF16 = {0xFF, 0xFE}; ///unicode 头标示
Response.Clear();
Response.Charset = "utf-16";
Response.Buffer = true;
this.EnableViewState = false;
Response.ContentEncoding = System.Text.UnicodeEncoding.Unicode;
Response.ContentType = "text/csv";
Response.AppendHeader("Content-Length", strCSV.Length.ToString());
Response.AppendHeader("Content-Disposition", "attachment;filename=/"" + strInitFileName +"/"") ;
Response.BinaryWrite(btyeUTF16); ///写文件头 Byte Order Mark
Response.Write(strCSV.ToString()); //写文件内容
Response.Flush();
Response.End();
现在到处的.csv文件就能够直接excel打开了。