【问题标题】:UTF8 not working in ExcelUTF8 在 Excel 中不起作用
【发布时间】:2011-11-01 10:33:24
【问题描述】:

在我正在使用的 .net 代码中

byte[] bytesToSend = System.Text.Encoding.UTF8.GetBytes(partialtorender);

然后我把它写成excel

“印地语”文本在生成的 excel 中出现乱码,您能建议怎么做吗?

System.IO.MemoryStream memStr = new System.IO.MemoryStream();

memStr.Write(bytesToSend, 0, bytesToSend.Length);

 memStr.Position = 0;

FileStreamResult result1 = new FileStreamResult(memStr, "application/ms-excel");

Response.AddHeader("content-disposition", "attachment; filename=" + "newExcelSheet" + ".xls");

return result1;

【问题讨论】:

  • 你还没有展示你是如何在 Excel 中编写的,或者你是否告诉 Excel 它是 UTF-8 数据以任何方式、形状或形式......
  • 你能显示更多你的代码吗?您发布的行仅将您的 UTF-8 字符串转换为字节数组。没问题:-)
  • partialtorender 变量是什么? HTML、CSV、...?
  • @msirwani,是的,我知道它是一个字符串变量。但它的内容是什么?您意识到xls 文件是具有专有格式的二进制文件。为了生成 xls 文件,您可能需要使用 Office Interop。

标签: c# .net asp.net-mvc excel


【解决方案1】:

尝试发出 UTF-8 前导码以向 Excel 指示正确的编码。 .xls 也是一种专有的二进制格式。您不能像在代码中那样只使用字符串变量。

这是一个 CSV 文件导出示例:

public ActionResult Index()
{
    var csv = "मानक हिन्दी;some other value";
    var data = Encoding.UTF8.GetBytes(csv);
    data = Encoding.UTF8.GetPreamble().Concat(data).ToArray();
    var cd = new ContentDisposition
    {
        Inline = false,
        FileName = "newExcelSheet.csv"
    };
    Response.AddHeader("Content-Disposition", cd.ToString());
    return File(data, "text/csv");
}

【讨论】:

  • 在代码中进行了一些小的修复,它就像一个魅力。谢谢迪米特洛夫
  • 您是否也有使用 Excel 打开和保存此 csv 将 csv 转换为空格而不是 ';' 的问题分隔?
【解决方案2】:

您的问题可能是 XLS 文件的默认编码是 不是 UTF-8。请保存您获得的文件并根据此帖子打开它:Choose an encoding standard when you open a file 这能解决您的问题吗?

【讨论】:

  • 这并不能解决问题。我以前尝试过这样做。我正在使用 Ms Office 2010... 这会产生问题吗??
  • 主要问题是,您没有显示生成 xls 内容的代码。您是否使用互操作程序集创建 xls 文件?如果是这样 - 为什么不创建一个 xlsx 文件?
  • 正如 Darin Dimitrov 已经问过的:内容是如何生成的?你如何创建最终应该是 Excel 工作表的字符串?
【解决方案3】:

经过一番努力,我找到了解决方案。 如果您查看 xls 文件的文本,您会发现它不是格式良好的 html,无论如何 excel 确实可以处理它。 但我想我应该让 excel 知道它是 utf-8。所以我用了:

Response.Write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>");

在写入流的其余部分之前,它确实有效!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-14
    • 2016-03-19
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    • 2011-02-22
    • 1970-01-01
    相关资源
    最近更新 更多