我需要用UTF-8-BOM编码创建一个csv文件,我使用的是.NET(C#)
公共异步任务下载CSVRESults([FromBody]配置文件搜索选项搜索选项)
{
var report=await profileManager.GetRep(searchOptions);
如果(报告==null)
{
返回NotFound();
}
var result=Encoding.UTF8.getPremission().Concat(report.Body.ToArray();
返回文件(结果,“text/csv”,“$”UserProfiles.{DateTime.Now:yyyy.MM.dd.HH.MM.ss}.csv”);
}
公共异步任务GetRep(配置文件搜索选项搜索选项)
{
if(searchOptions==null)
{
返回null;
}
var searchResult=等待搜索配置文件(tenantDomain、false、searchOptions);
if(searchResult==null)
{
返回null;
}
var报告=生成报告记录(“受训人员”);
var fileAsBytes=CsvService.GetCSVAsBytesWithHeaders(searchResult.UsersProfiles.Select(m=>newuserprofileviewmodel
{
Id=m.Id,
FirstNameAr=m.FirstNameAr,
父亲的名字,
FamilyNameAr=m.FamilyNameAr,
FullNameAr=m.FullNameAr,
Email=m.租户?选择(t=>t.Email).聚合((t1,t2)=>t1+“,”+t2),
Deleted=m.Deleted.HasValue&&m.Deleted.Value?“是”:“否”,
}));
report.Body=fileAsBytes;
report.Status=ReportStatus.Success;
返回报告;
}
公共静态字节[]GetCsvasBytesWithHeader(IEnumerable数据)
{
使用(var memory=new MemoryStream())
使用(var writer=newstreamwriter(内存,新的UTF8Encoding(true)))
使用(var csvWriter=新的csvWriter(writer))
{
csvWriter.Configuration.RegisterClassMap();
CSV编写器写入记录(数据);
writer.Flush();
var result=memory.ToArray();
返回结果;
}
}
私有报表生成器报表记录(字符串报表标题、字符串报表名称)
{
返回新报告
{
Id=Guid.NewGuid().ToString(),
ReportTitle=$“{ReportTitle}.{DateTime.Now:yyyy.MM.dd.HH.MM.ss}”,
Status=ReportStatus.InProgress
};
},c#,.net,csv,encoding,byte-order-mark,C#,.net,Csv,Encoding,Byte Order Mark,这是我正在使用的三个主要功能CSV文件是创建的,但是使用UTF-8编码,但是正如我所提到的,我需要UTF-8-BOM…有什么帮助吗?先谢谢你。。。
问题是在我的csv文件中,一些字符显示为“ا§§§§§§§§§§§§§§§§§§§§§§§§§§”相关:。看似相反,但可能会导致解决方案…他使用的是var writer=new StreamWriter(内存,新UTF8Encoding(true),答案是将布尔值设置为false,而在我的代码中,它设置为true。。。
public async T
|