Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# UTF8在Excel中不工作_C#_.net_Asp.net Mvc_Excel - Fatal编程技术网

C# UTF8在Excel中不工作

C# UTF8在Excel中不工作,c#,.net,asp.net-mvc,excel,C#,.net,Asp.net Mvc,Excel,在我使用的.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); m

在我使用的.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;

您的问题可能是XLS文件的默认编码是而不是UTF-8。请保存您获得的文件并根据以下帖子打开:
这是否解决了您的问题?

尝试发出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");
}

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

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

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

您还没有展示如何在Excel中编写它,或者您是否以任何方式、形状或形式告诉Excel它是UTF-8数据……您能展示更多的代码吗?您发布的行仅将UTF-8字符串转换为字节数组。没有问题:-)这个
partialtorender
变量是什么?HTML,CSV,…@msirwani,是的,我知道它是一个字符串变量。但它的内容是什么?您知道
xls
文件是具有专有格式的二进制文件。为了生成xls文件,您可能需要使用Office Interop。这并不能解决此问题。我以前试过这样做。我正在使用Ms Office 2010。。。这是否会产生问题??主要问题是,您没有显示生成xls内容的代码。是否使用互操作程序集创建xls文件?如果是这样的话,为什么不创建一个xlsx文件呢?正如达林·迪米特罗夫所问:内容是如何生成的?如何创建最终应该是Excel工作表的字符串?在代码中进行了一些小的修改,它就像一个符咒。感谢DimitrovDo,您还有一个问题,即使用Excel打开和保存此csv会将csv转换为以空格分隔的格式,而不是“;”格式分隔?