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

时间:2013-07-02 12:02:32

标签: asp.net excel csv web utf-8

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

代码:

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正确打开这样的文件。 将不胜感激。

3 个答案:

答案 0 :(得分:1)

只需在开头添加\xfeff

答案 1 :(得分:0)

请按照以下步骤操作:

  • 菜单 - &gt;数据 - &gt; GetExternal Data - &gt;来自文字
  • 使用文件对话框选择您的csv
  • 在文本导入向导的步骤1中,选择“65001:Unicode(UTF-8)”作为文件来源。

答案 2 :(得分:0)

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