3

我使用以下代码从 unicode 字符串创建 csv 文件:

context.Response.ContentType = "text/csv";
context.Response.ContentEncoding = System.Text.Encoding.Utf8;        
context.Response.AddHeader("Content-Disposition", "attachment; filename=" + fundName + ".csv");
context.Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());                

String output ="";        
output += "Name, callNumber" + "\n";
String output ="علی,34343555" + "\n";     
context.Response.Write(output);

问题是 unicode 字符不能正确显示“علی”。

感谢您的任何指导。问候阿里

4

4 回答 4

5

我宁愿使用 streamwriter 使用 UTF-8 编码编写 unicode 字符。片段:

 using (StreamWriter sw = new StreamWriter(new FileStream("c:/Temp.csv", FileMode.Create), Encoding.UTF8))
            {
                    sw.WriteLine(string.Join(",", s));
            }
于 2014-06-06T22:48:24.063 回答
2

代码的一些问题。

  • context.Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());为 UTF-32而不是UTF-8编写 BOM 。

  • 输出变量定义了两次。

我建议试试这个:

context.Response.ContentType = "text/csv";
context.Response.ContentEncoding = System.Text.Encoding.Utf8;        
context.Response.AddHeader("Content-Disposition", "attachment; filename=" + fundName + ".csv");

String output ="";        
output += "Name, callNumber" + "\n";
output +="علی,34343555" + "\n";     
context.Response.Write(output);
context.Response.End()
于 2013-01-08T21:18:26.713 回答
0

仅用于Encoding.Unicode编写 Unicode CSV 文件:

File.WriteAllText("path/to/file.csv", yourString, Encoding.Unicode);
于 2020-05-07T13:16:09.330 回答
-1
Response.Clear();
Response.AppendHeader("Content-Type", "Application/vnd.ms-excel");
Response.ContentEncoding = Encoding.UTF8;
Response.AppendHeader("Content-Disposition", "attachment; filename=filename1.csv");
var data = Encoding.UTF8.GetBytes("your content with chinese characters");
var result = Encoding.UTF8.GetPreamble().Concat(data).ToArray();
var str = Encoding.UTF8.GetString(result);
Response.Write(str);
Response.Flush();
Response.SuppressContent = true;
于 2019-11-13T18:07:20.613 回答