Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.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# 在c中将unicode字符串写入csv#_C#_Csv_Unicode String - Fatal编程技术网

C# 在c中将unicode字符串写入csv#

C# 在c中将unicode字符串写入csv#,c#,csv,unicode-string,C#,Csv,Unicode String,我使用以下代码从unicode字符串创建csv文件: context.Response.ContentType = "text/csv"; context.Response.ContentEncoding = System.Text.Encoding.Utf8; context.Response.AddHeader("Content-Disposition", "attachment; filename=" + fundName + ".csv"); context.Respon

我使用以下代码从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字符不能正确显示“علی”

谢谢你的指导。 当做
阿里

代码有一些问题

  • 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()

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


只需使用此选项编写Unicode CSV文件:

File.WriteAllText("path/to/file.csv", yourString, Encoding.Unicode);

你用什么读取文件?你确认UTF8是适合阿拉伯字符的编码吗?@ScruffyDuck胡说。UTF8是一种完整的Unicode编码。据我所知,几乎所有读取CSV、ASCII/ANSI的应用程序。除非你打算自己处理这个文件,否则你可能运气不好。看看这个链接,它谈到了BOM和编码,听起来这可能是你遇到的问题。谢谢分享!它工作得很好。想详细说明一下string.join在这里的作用吗?如果不使用string.join,则以单行结束,但使用string.join结束。它以正确的逗号分隔行结束。string.join只是在字符串之前附加逗号。这里的技巧是Encoding.UTF8选项。要在CSV文件中显示汉字,需要使用编码UTF-8-BOM。上面的代码就是这样做的。
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;
File.WriteAllText("path/to/file.csv", yourString, Encoding.Unicode);