Bonjour,

Je m'excuse d'avance si je suis dans la mauvaise section bien que je pense ne pas m'être trompé :p Je dois réaliser une API à l'aide d'ASP.NET Core 2.0 qui renvoie un CSV.
La librairie utilisée est CsvHelper. Actuellement l'API renvoie bien le CSV mais je rencontre un problème d'encodage, au niveau des accents vous vous en douterez :p

Voici le code de mon contrôleur :

Code :Sélectionner tout -Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
        [HttpGet("")]
        [Route("testrt.csv")]
        [Produces("text/csv")]
        public async Task<IActionResult> GetTestAsCSV(
            [FromHeader(Name = "X-mon-id")]string id)
        {
            byte[] result = await ExportCSVService(id);
 
            string contentType = "text/csv; charset=utf-8";
            Response.ContentType = contentType;
            Response.Headers.Clear();
            Response.Headers.Add("Content-Length", result.Length.ToString());
            Response.Headers.Add("Content-disposition", "attachment; filename=test.csv");
 
                return new FileContentResult(result, contentType)
                {
                    FileDownloadName = "test.csv"
                };
 
        }


Voici le code mon service :

Code :Sélectionner tout -Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
            using (MemoryStream stream = new MemoryStream())
            using (var writer = new StreamWriter(stream, Encoding.UTF8))
            using (var csv = new CsvWriter(writer))
            {
                csv.Configuration.Delimiter = ";";
                // csv.Configuration.CultureInfo = new CultureInfo("fr-FR);
 
                csv.WriteField("François et Clément");
 
                await csv.NextRecordAsync();
 
                await writer.FlushAsync();
                await stream.FlushAsync();
 
                return stream.ToArray();
            }


J'ai vraiment tout essayé Enfin la solution trouvée est manuelle : ce serait de modifier via Notepad++ le csv généré (Convertir en UTF8), enregistrer, le rouvrir et constater que les accents apparaissent
Mais il serait souhaitable une solution "auto", on va pas demander à l'utilisateur final d'effectuer cette manip.

Merci d'avance pour votre aide