我需要使用 UTF-8-BOM 编码创建一个 csv 文件,我使用的是 .NET (C#)

问题描述

public async Task<IActionResult> DownloadCSVResults([FromBody] ProfilesSearchOptions searchOptions)
    {
         var report = await profileManager.GetRep(searchOptions);
        if (report == null)
        {
            return NotFound();
        }
        var result = Encoding.UTF8.GetPreamble().Concat(report.Body).ToArray();
        return File(result,"text/csv",$"UserProfiles.{DateTime.Now:yyyy.MM.dd.HH.mm.ss}.csv");
    }



public async Task<Report> GetRep(ProfilesSearchOptions searchOptions) 
    {
        if (searchOptions == null)
        {
            return null;
        }

        var searchResult = await SearchProfiles(tenantDomain,false,searchOptions);

        if (searchResult == null)
        {
            return null;
        }
        var report = GenerateReportRecord("Trainee");
        var fileAsBytes = CsvService.GetCSVAsBytesWithHeaders(searchResult.UsersProfiles.Select(m => new UserProfileviewmodel
        {
            Id = m.Id,FirstNameAr = m.FirstNameAr,FatherNameAr = m.FatherNameAr,FamilyNameAr = m.FamilyNameAr,FullNameAr = m.FullNameAr,Email = m.Tenants?.Select(t => t.Email).Aggregate((t1,t2) => t1 + "," + t2),Deleted = m.Deleted.HasValue && m.Deleted.Value ? "Yes" : "No",}));

        report.Body = fileAsBytes;
        report.Status = ReportStatus.Success;
        return report;
    }

public static byte[] GetCSVAsBytesWithHeaders<T>(IEnumerable<T> data)
    {
        using (var memory = new MemoryStream())
        using (var writer = new StreamWriter(memory,new UTF8Encoding(true)))
        using (var csvWriter = new CsvWriter(writer))
        {
            csvWriter.Configuration.RegisterClassMap<AutoClassMapWithApplydisplayNameAttribute<T>>();
            csvWriter.WriteRecords<T>(data);
            writer.Flush();
            var result = memory.ToArray();
            return result;
        }
    }

private Report GenerateReportRecord(string reportTitle,string reportName)
    {
        return new Report
        {
            Id = Guid.NewGuid().ToString(),ReportTitle = $"{reportTitle}.{DateTime.Now:yyyy.MM.dd.HH.mm.ss}",Status = ReportStatus.InProgress
        };
    }

这些是我使用的三个主要功能,我使用 CSV 文件创建但使用 UTF-8 编码,但正如我提到的,我需要它是 UTF-8-BOM ......有什么帮助吗?并提前致谢... 问题出在我的 csv 文件中,一些字符显示为这样 => " الاسÙ... الاول "

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)