我需要什么字符集正确编码CSV日语在Excel中打开?

我的asp.net应用程序应该导出数据集作为CSV文件打开在Excel中。 数据集除英文字符外还有日文双倍宽度的汉字字符。

我已经尝试了许多标题,字符集和内容编码的不同组合,但是我没有find正确的组合,允许Excel打开文件并正确显示日文字符。

但是,如果我在记事本中打开文件,然后使用UTF-8编码保存它,则可以在Excel中打开该文件,并按照预期查看日文字符。 因此,它一定是可能的,但我找不到正确的标题组合,使其工作,而无需打开并保存导出的文件在记事本中。

Private Sub TestCSV() Dim context As HttpContext = HttpContext.Current context.Response.Clear() context.Response.ClearHeaders() context.Response.ClearContent() context.Response.Cache.SetCacheability(HttpCacheability.NoCache) context.Response.AddHeader("Content-Disposition", "attachment; filename=test.csv") context.Response.ContentType = "text/csv" context.Response.Charset = Encoding.UTF8.WebName context.Response.Write("English,Japanese") context.Response.Write(Environment.NewLine) context.Response.Write("Test,日本語") context.Response.End() End Sub 

任何帮助获取此代码的工作将不胜感激。

我也尝试使用以下几行代码以各种组合和顺序,但没有任何工作。

  context.Response.BinaryWrite(Encoding.UTF8.GetPreamble()) context.Response.BinaryWrite(Encoding.GetEncoding("utf-16le").GetPreamble()) context.Response.Charset = Encoding.GetEncoding("utf-16le").WebName context.Response.AddHeader("Content-Type", "text/csv; charset=utf-16") context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1250") 

谢谢!

得到它了! 我添加了一些其他的语言和符号只是为了加倍确定。

关键是将标题中的字符集,内容编码前导码都设置为UTF-8。

 Private Sub TestCSV() Dim context As HttpContext = HttpContext.Current context.Response.Clear() context.Response.ClearHeaders() context.Response.ClearContent() context.Response.Cache.SetCacheability(HttpCacheability.NoCache) context.Response.ContentType = "text/csv" context.Response.AddHeader("Content-Disposition", "attachment; filename=test.csv") context.Response.Charset = Encoding.UTF8.WebName context.Response.ContentEncoding = Encoding.UTF8 context.Response.BinaryWrite(Encoding.UTF8.GetPreamble) context.Response.Write("Language,Sample") context.Response.Write(Environment.NewLine) context.Response.Write("Symbol,™£©€®") context.Response.Write(Environment.NewLine) context.Response.Write("Japanese,日本語") context.Response.Write(Environment.NewLine) context.Response.Write("Chinese Simplified,中文(简体)") context.Response.Write(Environment.NewLine) context.Response.Write("Spanish,Español") context.Response.Write(Environment.NewLine) context.Response.Write("Chinese Traditional,中文(繁體)") context.Response.Write(Environment.NewLine) context.Response.Write("Korean,한국어") context.Response.End() End Sub 

谢谢!

 /// <summary> /// method to export report into excel /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void linkProcess_Click(object sender, EventArgs e) { Response.ClearContent(); Response.AddHeader("content-disposition", string.Format("attachment;filename={0}.xls", "YTDReviewsData")); Response.ContentType = "application/ms-excel"; Response.ContentEncoding = System.Text.Encoding.Unicode; Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble()); System.IO.StringWriter stringWrite = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite); gvDealDetails.RenderControl(htmlWrite); Response.Write(stringWrite.ToString()); Response.End(); }