我有一个下载数据表值的代码为csv格式。它工作正常,我可以下载Csv.But问题是我的数据表包含一些丹麦字符,当我下载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();
}
任何人都可以提供解决方案吗?
答案 0 :(得分:0)
你的麻烦是因为没有编码。选择编码(utf-8?)并将相应的信息附加到客户的响应中。
看看How can I output a UTF-8 CSV in PHP that Excel will read properly? - 您会看到一些额外的响应标题,甚至是专门用于Excel的“黑客”。