2016-09-14 183 views
0

我試圖SQL Server表導出到一個CSV文件:CSV文件導出問題

表中數據是像= PRESENTACION或彌散

所有的工作好...但在.CSV文件我發現:

Presentación or Difusión 

這是我的.cs代碼:

GridView1.AllowPaging = false; 
GridView1.DataBind(); 

StringBuilder sb = new StringBuilder(); 

for (int k = 0; k < GridView1.Columns.Count; k++) 
{ 
    // add separator 
    sb.Append(GridView1.Columns[k].HeaderText + ';'); 
} 

// append new line 
sb.Append("\r\n"); 

for (int i = 0; i < GridView1.Rows.Count; i++) 
{ 
    for (int k = 0; k < GridView1.Columns.Count; k++) 
    { 
     // add separator 
     sb.Append(GridView1.Rows[i].Cells[k].Text + ';'); 
    } 

    // append new line 
    sb.Append("\r\n"); 
} 

Encoding encoding = Encoding.UTF8; 

Response.Clear(); 
Response.Buffer = true; 
Response.AddHeader("content-disposition", "attachment;filename=OrigenDatos.csv"); 
Response.Charset = encoding.EncodingName; 
Response.ContentType = "application/text"; 
Response.ContentEncoding = Encoding.Unicode; 
Response.Output.Write(sb.ToString()); 
Response.Flush(); 
Response.End(); 

UTF-8是真正的字符集嗎?

+0

UTF是一個字符集,但你的文字無疑是utf與HTML編碼。 –

+0

utf-8被指定在我的webform.aspx @MarcB Synapsido

+0

看看我的答案。更多信息可以在這裏找到:https://www.w3.org/TR/html401/charset.html#h-5.2.2 –

回答

1

爲了正確解碼HTML文件,瀏覽器需要知道使用哪種編碼。您可以通過設置charset parameter或通過設置meta tag就告訴他:<meta charset="UTF-8">

所以:你需要使用UTF-8來保存的HTML文件,並正確地聲明編碼。

從理論上講,您的服務器默認編碼是UTF-8,您應該從.htaccess服務器文件中刪除AddDefaultCharset your_encoding,然後編寫AddDefaultCharset utf-8。但我不確定這是關於你的情況。

編輯:

字節&#243;代表西班牙字符在UTF-8點。所以我認爲你不應該嘗試用其他編碼進行編碼,因爲它肯定是utf-8。

+0

CMS與C#/ ASP.NET不支持.htaccess配置 – Synapsido

+0

好吧,這是很好的知道。如果你的問題沒有解決,我會爲你更新,你可以嘗試其他的 –

0

您可以嘗試這下面的代碼

 Response.Clear(); 
     Response.Buffer = true; 
     Response.AddHeader("content-disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(fileName, Encoding.UTF8) + ""); 
     Response.Cookies.Add(new System.Web.HttpCookie("fileDownload", "true")); 
     Response.Charset = ""; 
     Response.ContentType = "application/csv"; 
     Response.ContentEncoding = Encoding.UTF8; 
     Response.BinaryWrite(Encoding.UTF8.GetPreamble()); 
     Response.Write(outPutStringData); // Information which you want in .csv file 
     Response.Flush(); 
     Response.End();