如何对csv导出进行HTML编码

P.B*_*key 2 html c# csv asp.net

我明白了

 Quattrode® 
Run Code Online (Sandbox Code Playgroud)

从HTML编码为的字符串

Quattrode® 
Run Code Online (Sandbox Code Playgroud)

在Excel 2007中查看时.

常规

        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, ","));
Run Code Online (Sandbox Code Playgroud)

基本上DataGridToCSV()使用 HttpUtility.HtmlDecode(stringBuilder.ToString());,我可以使用visual studio的文本可视化工具,看看字符串看起来正确(Quattrode®).

因此,Response过程或Excel对文件的解释中的某些内容不正确.知道怎么解决?


更新
原来在Excel或写字板中无法正确解释.我在记事本中打开它,符号显示正确.

Col*_*lin 8

我在这里找到答案/sf/answers/231059811/ 并在这里/sf/answers/452234191/ 然后把这段代码放在一起:

    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();
    }
Run Code Online (Sandbox Code Playgroud)


Ari*_*tos 5

也试试这个

Response.ContentEncoding = Encoding.UTF32;
Run Code Online (Sandbox Code Playgroud)