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:
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 .