为什么MS Excel不能正确打开内容中包含日文字符的CSV文件?

包含日文字符(UTF-8字符集)的CSV文件是使用ASP.NET从服务器端创build的。

码:

public void ExportToCsv_Click(object sender, EventArgs e) { try { string sContents = string.Empty; string sTemp; for (int k = 1; k <= (ObjList.Columns.Count - 1); k++) { sContents += ObjList.HeaderRow.Cells[k].Text + ","; } sContents += "\r\n"; for (int i = 0; i <= (ObjList.Rows.Count - 1); i++) { for (int j = 1; j <= (ObjList.Columns.Count - 1); j++) { sTemp = (ObjList.Rows[i].Cells[j].Text.ToString()); if (sTemp == "&nbsp;") sTemp = ""; if (j < ObjList.Columns.Count - 1) sTemp = (sTemp + ","); sContents += sTemp; } sContents += "\r\n"; } Response.Clear(); Response.ClearHeaders(); Response.ClearContent(); Response.AddHeader("Content-disposition", "attachment; filename=" + "partslist.csv"); Response.ContentType = "application/csv"; Response.Charset = "UTF-8"; Response.ContentEncoding = System.Text.Encoding.UTF8 ; Response.Write(sContents); Response.Flush(); Response.End(); } catch (Exception ex) { throw new Exception(ex.Message); } } 

但是,在Microsoft Excel 2003中打开此文件时,它不会正确显示文件内容。

如何使excel正确打开这样的文件。 帮助将不胜感激。

只需在开头添加\xfeff

按照这个程序:

  • 菜单 – >数据 – > GetExternal数据 – >从文本
  • 使用文件对话框select您的csv
  • 在文本导入向导步骤1中,select“65001:Unicode(UTF-8)”作为文件来源。

Excel使用SJIS(Shift JIS)作为默认编码。
您可以尝试将UTF-8转换为SJIS或使用UTF-8创build带有BOM的CSV文件。
我能够打开带有BOM的UTF-8 csv文件。