【问题标题】:CSV Character missingCSV 字符缺失
【发布时间】:2013-03-25 06:13:28
【问题描述】:

我有一个以 csv 格式下载数据表值的代码。它工作正常,我可以下载 Csv。但问题是我的数据表在我下载 csv 时包含一些丹麦字符,csv 文件包含所有详细信息,但丹麦语字符被其他一些字符替换。这是我的代码。

string myXMLfile = Server.MapPath("~/App_Data/myfilecsv.xml");
DataSet ds = new DataSet();
System.IO.FileStream fsReadXml = new System.IO.FileStream(myXMLfile,
                                                          System.IO.FileMode.Open);

try
{
    ds.ReadXml(fsReadXml);
    DataTable dt = ds.Tables[1];


    System.Text.StringBuilder sb = new StringBuilder();

    IEnumerable<string> columnNames = dt.Columns.Cast<DataColumn>().
                                        Select(column => column.ColumnName);
    sb.AppendLine(string.Join(",", columnNames));

    foreach (DataRow row in dt.Rows)
    {
        IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString());
        foreach (var item in fields)
        {
            sb.AppendFormat("\"{0}\",", item.Replace("\"", "\"\""));
        }
        sb = sb.Remove(sb.Length - 1, 1);
        sb.Append("\n");

    }

    string attachment = "attachment; filename=mycsvfile.csv";
    Response.ClearContent();
    Response.AddHeader("content-disposition", attachment);
    Response.ContentType = "application/csv";

    Response.Write(sb.ToString());
    Response.End();

}
catch (Exception ex)
{
    umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Error, 00002, ex.ToString());
}
finally
{
    fsReadXml.Close();
}

谁能给个解决办法???

【问题讨论】:

标签: c# csv umbraco


【解决方案1】:

您的麻烦是因为缺少编码。选择编码(utf-8?)并将适当的信息附加到客户端的响应中。

看看How can I output a UTF-8 CSV in PHP that Excel will read properly? - 您会看到一些额外的响应标头,甚至是专门针对 Excel 的“hack”。

【讨论】:

  • 链接的问题说:(1)附加的“内容编码”标头(2)charset = UTF-8 到现有的“内容类型”标头(3)字节顺序标记为第一个字节响应数据。我认为您需要检查所有 3 点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-14
  • 1970-01-01
  • 2019-09-06
  • 1970-01-01
  • 2023-02-22
相关资源
最近更新 更多