如何对csv导出进行HTML编码
本文关键字:HTML 编码 csv | 更新日期: 2023-09-27 18:00:20
我得到
Quattrode®
从HTML编码为的字符串
Quattrode®
在Excel2007内部查看时。
常规
Response.Clear();
Response.Buffer = true;
Response.ContentType = "text/comma-separated-values";
Response.AddHeader("Content-Disposition", "attachment;filename='"Expired.csv'"");
Response.RedirectLocation = "export.csv";
Response.Charset = "";
//Response.Charset = "UTF-8";//this does not work either.
EnableViewState = false;
ExportUtility util = new ExportUtility();
Response.Write(util.DataGridToCSV(gridViewExport, ","));
基本上,DataGridToCSV()
使用HttpUtility.HtmlDecode(stringBuilder.ToString());
,我可以使用visualstudio的文本可视化工具,查看字符串是否正确(Quattrode®)。
因此,Response
过程或Excel对文件的解释中的某些内容是不正确的。知道怎么修吗?
更新
事实证明,这在Excel或写字板中没有得到正确的解释。我在记事本中打开它,符号就会正确显示。
我在这里找到了答案https://stackoverflow.com/a/3300854/150342在这里https://stackoverflow.com/a/6460488/150342然后把这个代码放在一起:
public static void WriteCSVToResponse(string csv, string filename)
{
HttpResponse response = HttpContext.Current.Response;
response.Clear();
response.ClearHeaders();
response.ClearContent();
response.ContentType = "text/csv";
response.AddHeader("content-disposition", "attachment; filename=" + filename);
response.ContentEncoding = Encoding.UTF8;
byte[] BOM = new byte[] { 0xef, 0xbb, 0xbf };
response.BinaryWrite(BOM);//write the BOM first
response.BinaryWrite(Encoding.UTF8.GetBytes(csv));
response.Flush();
response.End();
}
也可以试试这个
Response.ContentEncoding = Encoding.UTF32;
响应。字符集=";
尝试使用类似UTF-8 的东西