C# Excel和CSV导出未正确显示波斯语字符

C# Excel和CSV导出未正确显示波斯语字符,c#,asp.net,export-to-excel,export-to-csv,persian,C#,Asp.net,Export To Excel,Export To Csv,Persian,将SQL Server数据导出到.csv时,波斯语短语无法正确显示 string date = Helper.ToPersianDate(DateTime.Now).Replace("/", ""); date += ".csv"; Response.Clear(); Response.AppendHeader("content-disposition", "attachment; filename=" + date); Response.ContentType = "text/csv"; R

将SQL Server数据导出到
.csv
时,波斯语短语无法正确显示

string date = Helper.ToPersianDate(DateTime.Now).Replace("/", "");
date += ".csv";

Response.Clear();
Response.AppendHeader("content-disposition", "attachment; filename=" + date);
Response.ContentType = "text/csv";
Response.Charset = Encoding.Unicode.ToString();

foreach (DataRow r in ds.Tables[0].Rows)
{
    Response.Write(r[0]);
    Response.Write("\r\n");
}
Response.End();      

如果要获得符合IANA的正确编码标识符,应使用“Encoding.Unicode.HeaderName”,而不是“Encoding.Unicode.ToString()”。
string date = Helper.ToPersianDate(DateTime.Now).Replace("/", "");
date += ".csv";

Response.Clear();
Response.AppendHeader("content-disposition", "attachment; filename=" + date);
Response.ContentType = "text/csv";
Response.Charset = Encoding.Unicode.ToString();
Response.ContentEncoding = System.Text.Encoding.Unicode;

/*
 save utf-8 with BOM
 GetPreamble
 */  
Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());

foreach (DataRow r in ds.Tables[0].Rows)
{
    Response.Write(r[0]);
    Response.Write("\r\n");
}
Response.End();