Créer un fichier texte sans nomenclature

J’ai essayé cette approche sans aucun succès

le code que j’utilise:

// File name Ssortingng filename = Ssortingng.Format("{0:ddMMyyHHmm}", dtFileCreated); Ssortingng filePath = Path.Combine(Server.MapPath("App_Data"), filename + ".txt"); // Process myObject pbs = new myObject(); pbs.GenerateFile(); // pbs.GeneratedFile is a SsortingngBuilder object // Save file Encoding utf8WithoutBom = new UTF8Encoding(true); TextWriter tw = new StreamWriter(filePath, false, utf8WithoutBom); foreach (ssortingng s in pbs.GeneratedFile.ToArray()) tw.WriteLine(s); tw.Close(); // Push Generated File into Client Response.Clear(); Response.ContentType = "application/vnd.text"; Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + ".txt"); Response.TransmitFile(filePath); Response.End(); 

le résultat:

entrez la description de l'image ici

Il écrit quoi qu’il en soit dans la nomenclature , et les caractères spéciaux (comme Ø Å) ne sont pas corrects: – /

Je suis coincé!

Mon objective est de créer un fichier en utilisant UTF-8 comme encodage et 8859-1 comme jeu de caractères.

Est-ce si difficile à accomplir ou si je passe une mauvaise journée?

Toute aide est grandement appréciée, merci!

    Eh bien, il écrit la nomenclature car vous lui indiquez, dans la ligne

     Encoding utf8WithoutBom = new UTF8Encoding(true); 

    true signifie que la nomenclature doit être émise, en utilisant

     Encoding utf8WithoutBom = new UTF8Encoding(false); 

    n’écrit pas de nomenclature.

    Mon objective est de créer un fichier en utilisant UTF-8 comme encodage et 8859-1 comme jeu de caractères.

    Malheureusement, ce n’est pas possible, que vous écriviez ou non en UTF-8. C’est-à-dire que tant que les caractères que vous écrivez sont présents dans ISO Latin-1, il ressemblera à un fichier ISO 8859-1. Toutefois, dès que vous produisez un caractère qui n’est pas couvert par l’ISO 8859-1 (par exemple, ä, ö, ü) ces caractères seront écrits en tant que caractères multi-octets.

    Pour écrire la véritable norme ISO-8859-1, utilisez:

     Encoding isoLatin1Encoding = Encoding.GetEncoding("ISO-8859-1"); 

    Edit: après le commentaire de balexandre

    J’ai utilisé le code suivant pour tester …

     var filePath = @"c:\temp\test.txt"; var sb = new SsortingngBuilder(); sb.Append("dsfaskd jlsadfj laskjdflasjdf asdkfjalksjdf lkjdsfljas dddd jflasjdflkjasdlfkjasldfl asääääjdflkaslj df"); Encoding isoLatin1Encoding = Encoding.GetEncoding("ISO-8859-1"); TextWriter tw = new StreamWriter(filePath, false, isoLatin1Encoding); tw.WriteLine(sb.ToSsortingng()); tw.Close(); 

    Et le fichier a l’air parfaitement bien. Évidemment, vous devriez utiliser le même encodage lors de la lecture du fichier .