-3

When exporting SQL Server data to .csv, phrases in Persian don't show up correctly.

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();      
marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459

1 Answers1

0
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();      
Uwe Keim
  • 39,551
  • 56
  • 175
  • 291
  • Instead of `Encoding.Unicode.ToString()’ you should use ‘Encoding.Unicode.HeaderName’ if you want to get a proper IANA-compliant encoding identifier. – ckuri Dec 25 '17 at 11:43