Crear archivo de texto sin BOM
-
21-09-2019 - |
Pregunta
este abordaje sin ningún éxito
el código que estoy usando:
// File name
String filename = String.Format("{0:ddMMyyHHmm}", dtFileCreated);
String filePath = Path.Combine(Server.MapPath("App_Data"), filename + ".txt");
// Process
myObject pbs = new myObject();
pbs.GenerateFile();
// pbs.GeneratedFile is a StringBuilder object
// Save file
Encoding utf8WithoutBom = new UTF8Encoding(true);
TextWriter tw = new StreamWriter(filePath, false, utf8WithoutBom);
foreach (string 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();
El resultado:
Es escribir la lista de materiales no importa qué, y caracteres especiales (como Æ Ø Å ) no son correctas: - /
estoy atascado!
Mi objetivo es crear un archivo usando UTF-8 como la codificación y 8859-1 como CharSet
Es esto tan difícil de lograr, o me estoy haciendo un mal día?
Toda ayuda es muy apreciada, gracias!
Solución
Bueno, escribe la lista de materiales, ya se están dando instrucciones a, en la línea
Encoding utf8WithoutBom = new UTF8Encoding(true);
medios true
que la lista de materiales debe ser emitida, utilizando
Encoding utf8WithoutBom = new UTF8Encoding(false);
escribe ninguna lista de materiales.
Mi objetivo es crear un archivo con UTF-8 como codificación y 8859-1 como CharSet
Por desgracia, esto no es posible, ya sea que escribir UTF-8 o no. Es decir. siempre y cuando los caracteres que usted está escribiendo están presentes en ISO Latin-1 que se verá como un archivo ISO 8859-1, sin embargo, tan pronto como salida de un personaje que no está cubierto por la norma ISO 8859-1 (por ejemplo, ä, ö, ü ) estos caracteres se escriben como un carácter multibyte.
Para escribir cierto uso ISO-8859-1:
Encoding isoLatin1Encoding = Encoding.GetEncoding("ISO-8859-1");
Editar Después del comentario de balexandre
He utilizado el siguiente código para probar ...
var filePath = @"c:\temp\test.txt";
var sb = new StringBuilder();
sb.Append("dsfaskd jlsadfj laskjdflasjdf asdkfjalksjdf lkjdsfljas dddd jflasjdflkjasdlfkjasldfl asääääjdflkaslj d f");
Encoding isoLatin1Encoding = Encoding.GetEncoding("ISO-8859-1");
TextWriter tw = new StreamWriter(filePath, false, isoLatin1Encoding);
tw.WriteLine(sb.ToString());
tw.Close();
Y las miradas de archivos perfectamente bien. Obviamente, debe utilizar la misma codificación al leer el archivo .