C# 如何对csv导出进行HTML编码
我明白了 来自HTML编码为的字符串C# 如何对csv导出进行HTML编码,c#,html,asp.net,csv,C#,Html,Asp.net,Csv,我明白了 来自HTML编码为的字符串 Quattrode® 在Excel 2007内部查看时 例行程序 Quattrode® 基本上DataGridToCSV()使用HttpUtility.HtmlDecode(stringBuilder.ToString())
Quattrode®
在Excel 2007内部查看时
例行程序
Quattrode®
基本上DataGridToCSV()
使用HttpUtility.HtmlDecode(stringBuilder.ToString())我可以使用visual studio的文本可视化工具查看字符串是否正确(Quattrode®)
因此,响应
过程或Excel对文件的解释中的某些内容是不正确的。知道怎么修理吗
更新
结果表明,Excel或写字板中没有正确解释这一点。我在记事本中打开它,符号正确显示。Response.Charset=“”
尝试使用UTF-8之类的工具也可以尝试
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, ","));
我在这里找到了答案
这里呢
然后把这些代码放在一起:
Response.ContentEncoding = Encoding.UTF32;
这个建议不错,但不管用。我把Response.Charset=“UTF-8”代码>和问题是一样的。按照建议添加Response.Charset=“ISO-8859-13”,尝试ISO-8859-13
生成相同的结果。Try`Response.ContentEncoding=Encoding.Default;我敢肯定,在将CSV导入Excel时,您必须选择正确的文本编码,不是吗?确保你达到了UTF-8字符集。+1管理层刚刚改变了方向。稍后我将不得不尝试这些,因为我已退出到较旧版本的程序。已编辑的答案将使用Encoding.UTF32而不是UTF8。这确实解决了问题。
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();
}