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

时间:2013-05-14 12:54:58

标签: 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 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”中的重音符号。看起来像是这样:

  

Saldo adisposici�n:23.15�

有人告诉我该怎么做吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

以下适用于我:

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 };

似乎是编码。

http://en.wikipedia.org/wiki/Unicode http://en.wikipedia.org/wiki/UTF-8