C# 使用重音符号和货币符号对字符串进行编码,并返回FileStreamReturn(MemoryStream)MVC

C# 使用重音符号和货币符号对字符串进行编码,并返回FileStreamReturn(MemoryStream)MVC,c#,asp.net-mvc,csv,character-encoding,stringbuilder,C#,Asp.net Mvc,Csv,Character Encoding,Stringbuilder,我有以下代码: StringBuilder output = new StringBuilder(); output.AppendLine("Saldo a disposición: 23.15€"); [...] System.Text.UnicodeEncoding en = new UnicodeEncoding(); byte[] byteArray = en.GetBytes(output.ToString()); MemoryStream stream = new Memory

我有以下代码:

StringBuilder output = new StringBuilder();

output.AppendLine("Saldo a disposición: 23.15€");

[...]

System.Text.UnicodeEncoding en = new UnicodeEncoding();
byte[] byteArray = en.GetBytes(output.ToString());
MemoryStream stream = new MemoryStream(byteArray);
string filename = Guid.NewGuid().ToString("N").ToUpper() + ".csv";

stream.Flush();
stream.Seek(0, SeekOrigin.Begin);
return new FileStreamResult(stream, "application/vnd.ms-excel") { FileDownloadName = filename};
当我打开文档时,符号“€”和“disposión”中的重音不会出现。似乎是这样的:

第23.15节

有人告诉我怎么做吗


谢谢

以下内容对我有用:

string filename = Guid.NewGuid().ToString("N").ToUpper() + ".csv";

MemoryStream stream = new MemoryStream();

StreamWriter output = new StreamWriter(stream, Encoding.UTF8, 2 << 22);
output.WriteLine("Column1,Column2");
output.WriteLine("value for column one,\"Saldo a disposición: 23.15€\"");
output.WriteLine("another row col 1,another row col 2");
output.Flush();

stream.Seek(0, SeekOrigin.Begin);

return new FileStreamResult(stream, "application/octet-stream") { FileDownloadName = filename };
string filename=Guid.NewGuid().ToString(“N”).ToUpper()+“.csv”;
MemoryStream stream=新的MemoryStream();

StreamWriter输出=新的StreamWriter(stream,Encoding.UTF8,2以下内容适合我:

string filename = Guid.NewGuid().ToString("N").ToUpper() + ".csv";

MemoryStream stream = new MemoryStream();

StreamWriter output = new StreamWriter(stream, Encoding.UTF8, 2 << 22);
output.WriteLine("Column1,Column2");
output.WriteLine("value for column one,\"Saldo a disposición: 23.15€\"");
output.WriteLine("another row col 1,another row col 2");
output.Flush();

stream.Seek(0, SeekOrigin.Begin);

return new FileStreamResult(stream, "application/octet-stream") { FileDownloadName = filename };
string filename=Guid.NewGuid().ToString(“N”).ToUpper()+“.csv”;
MemoryStream stream=新的MemoryStream();

StreamWriter output=new StreamWriter(stream,Encoding.UTF8,2)如果用UTF8编码会有区别吗?不,没有区别。:(如果用UTF8编码会有区别吗?不,没有区别。:(我在Excel中一直出错,但如果用文本编辑器打开它,我会得到格式良好的文本。为什么会这样?尝试使用return new FileStreamResult。)(stream,“application/octet stream”)?它不是excel二进制文件。还需要确保您的输出符合CSV格式的指导原则:我检查了所有内容,并更改为内容类型,而不是您发送给我的内容,但仍然是错误的。它可能是pc的任何配置?当我将文件保存在服务器中并打开它时,文件就正常了(带有正确的符号和重音),但当我尝试直接下载而不在服务器上保存文档时,失败了。excel似乎对UTF8编码非常敏感。我根据自己的答案进行了修改,并在一个基本的mvc应用程序中进行了测试。当您使用专门针对utf-8编码的stream writer方法时,它似乎工作正常。我在Exc中一直出错el,但如果用文本编辑器打开它,我会得到格式良好的文本。为什么会这样呢?尝试使用returnnewfilestreamresult(stream,“application/octetstream”)?它不是excel二进制文件。同样值得确保您的输出符合CSV格式的指导原则:我检查了所有内容,并更改为内容类型,而不是您发送给我的内容,但仍然是错误的。可能是pc的任何配置?当我将文件保存在服务器中并打开它时,文件是正常的(带有正确的符号和重音),但当我尝试直接下载而不在服务器上保存文档时,失败了。excel似乎对UTF8编码非常敏感。我根据自己的答案进行了修改,并在基本mvc应用程序中进行了测试。当您使用专门针对utf-8编码的流式编写器方法时,它似乎工作正常。