繁体   English   中英

将 unicode 数据导出到 CSV 文件

[英]Export unicode data to CSV file

虽然这个问题被很多人问了好几次,但我还是无法以正确的文本生成所需的 CSV 文件。 我正在创建一个 CSV 文件,其中的字符设置为日语。 每当我生成一个 CSV 文件时,它都不会以正确的编码导出它。 我想让它在 Excel 工作表中可读。 它在调试时显示正确的数据,记事本也显示正确的 csv,但是当我从 Excel 读取文件时,所有文本都被弄乱了。

这是我的代码:

private void GenerateCSV(string[][] value)
    {
        string attachment = "attachment; filename=CreatedCSV.csv";

        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.ClearHeaders();
        HttpContext.Current.Response.ClearContent();
        HttpContext.Current.Response.AddHeader("content-disposition", attachment);
        HttpContext.Current.Response.ContentType = "text/csv";
        HttpContext.Current.Response.Charset = "";
        HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
        HttpContext.Current.Response.BinaryWrite(System.Text.Encoding.UTF8.GetPreamble());

        string delimiter = ", ";
        int length = value.GetLength(0);
        StringBuilder sb = new StringBuilder();
        for (int index = 0; index < length; index++)
            sb.AppendLine(string.Join(delimiter, value[index]));

        HttpContext.Current.Response.Write(sb.ToString());
        HttpContext.Current.Response.End();
    }

我也尝试实现 unicode,但它也没有帮助。 我在这里缺少什么?

Excel 文件如下所示: 在此处输入图片说明

虽然记事本正确显示数据如下: 在此处输入图片说明

您的源字符串可能编码不正确。 我们使用了您的代码,它适用于特殊字符,但我们的字符串生成器使用以下代码以 UTF8 编码:

byte[] buffer = Encoding.UTF8.GetBytes(DataFeedCSV.ToString());
StringBuilder sb = new StringBuilder();
sb.Append("pröva-Testing");
sb.Append("\r\n");
var data = Encoding.UTF8.GetBytes(sb.ToString());
var result = Encoding.UTF8.GetPreamble().Concat(data).ToArray();
return File(result, "application/csv", "foo.csv");

有了这些行,我认为 Excel 将能够使用 UTF-8 对其进行编码,因为它知道它是一个 utf8 编码的 csv

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM