C# 在c中将unicode字符串写入csv#
我使用以下代码从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
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);