Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.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# 带有excel可以打开的特殊字符的.Net HttpResponseMessage csv文件_C#_.net_Excel_Asp.net Web Api_Encoding - Fatal编程技术网

C# 带有excel可以打开的特殊字符的.Net HttpResponseMessage csv文件

C# 带有excel可以打开的特殊字符的.Net HttpResponseMessage csv文件,c#,.net,excel,asp.net-web-api,encoding,C#,.net,Excel,Asp.net Web Api,Encoding,我的应用程序是一个.net WebAPI(C#,没有MVC),除了其他功能外,它还必须为一些csv文件提供服务器,这些文件的内容还可以包括非标准字符(即希腊字母) 我试图在SO上找到一个解决方案,但大多数答案都涉及使用基本mvc控制器类的File方法(我没有访问权限) 我当前的代码如下所示(我甚至删除了File.ReadAllText部分,以检查它是否只返回一个简单的Hello World文本) 我还尝试使用response.Content.Headers.ContentEncoding.Add

我的应用程序是一个.net WebAPI(C#,没有MVC),除了其他功能外,它还必须为一些csv文件提供服务器,这些文件的内容还可以包括非标准字符(即希腊字母)

我试图在SO上找到一个解决方案,但大多数答案都涉及使用基本mvc控制器类的File方法(我没有访问权限)

我当前的代码如下所示(我甚至删除了File.ReadAllText部分,以检查它是否只返回一个简单的Hello World文本)

我还尝试使用
response.Content.Headers.ContentEncoding.Add(Encoding.UTF8.BodyName)

一些奇怪的互动:

如果我下载文件并用Excel打开它,它会读起来乱七八糟,如果我用notepad++打开,文本会读得很好。它还声明编码为utf8,如果我将其更改为utf-8 BOM并保存文件,excel可以读取它


如果我只是简单地将文件从服务器移动到我的计算机上,excel读取它不会有问题。

似乎我忽略了一个问题。它是关于一个MVC项目的,但仍然适用

我只是把它改成:

var content = Encoding.UTF8.GetBytes(File.ReadAllText(pathName));
response.Content = new ByteArrayContent(Encoding.UTF8.GetPreamble().Concat(content).ToArray());

似乎我遗漏了应该出现在utf8bom文件开头的字符。

尝试
新建StringContent(“Γειά∑οά∑με”),Encoding.UTF8,“text/csv”)
@aepot没有区别。我认为问题在于utf8和utf8bom之间的差异。但我不知道如何将其设置为bom。比较逐字节响应和复制的文件。可能重复@aepot谢谢您的帮助。我终于在一个关于MVC项目的问题中找到了答案。
var content = Encoding.UTF8.GetBytes(File.ReadAllText(pathName));
response.Content = new ByteArrayContent(Encoding.UTF8.GetPreamble().Concat(content).ToArray());