CSV-file-Export mit Codierung Probleme

Ich versuche, eine SQL server-Tabelle in eine CSV-file zu exportieren:

data in der Tabelle ist wie = Presentación oder Difusión

Alles funktioniert gut … aber in der .CSV file finde ich:

 Presentación or Difusión 

Das ist mein .cs code:

 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(); 

Ist UTF-8 der wahre charactersatz?

Um eine HTML-file korrekt zu dekodieren, muss Ihr Browser wissen, welche Codierung verwendet werden soll. Sie können es ihm sagen, indem Sie den charactersatzparameter setzen oder indem Sie das Meta-Tag setzen : <meta charset="UTF-8">

Also: Sie müssen die HTML-file mit UTF-8 speichern und deklarieren, dass die Codierung richtig ist.

Es kann auch theoretisch sein, dass auf deinem server die Standard-Codierung anders als UTF-8 ist – dann solltest du die AddDefaultCharset your_encoding aus der .htaccess serverdatei löschen und AddDefaultCharset utf-8 schreiben. Aber ich bin mir nicht sicher, ob es sich hier um Ihren Fall handelt.

BEARBEITEN:

Das Byte &#243; steht für spanischen Charakter ó in UTF-8. Also ich denke, du solltest nicht versuchen, mit anderen Codierungen zu codieren, denn es ist definitiv utf-8.

Sie können diesen unten Code ausprobieren

  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();