txt texto lineas leer guardar crear creacion como cargar archivos archivo agregar abrir c# asp.net-3.5 text-files byte-order-mark

texto - crear archivo csv c#



Crear archivo de texto sin BOM (1)

Bueno, escribe la lista de materiales porque lo está ordenando, en la línea

Encoding utf8WithoutBom = new UTF8Encoding(true);

true significa que la BOM debe emitirse, utilizando

Encoding utf8WithoutBom = new UTF8Encoding(false);

no escribe BOM.

Mi objetivo es crear un archivo usando UTF-8 como codificación y 8859-1 como CharSet

Tristemente, esto no es posible, ya sea que escribas UTF-8 o no. Es decir, siempre que los caracteres que está escribiendo estén presentes en ISO Latin-1 se verá como un archivo ISO 8859-1, sin embargo, tan pronto como genere un carácter que no esté cubierto por ISO 8859-1 (por ejemplo, ä, ö, ü) estos caracteres se escribirán como un carácter multibyte.

Para escribir el verdadero uso de ISO-8859-1:

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

Editar: después del comentario de balexandre

Usé 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 el archivo se ve perfectamente bien. Obviamente, debe usar la misma codificación al leer el archivo .

Probé este enfoque 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:

Está escribiendo el BOM sin importar qué, y los caracteres especiales (como Æ Ø Å) no son correctos: - /

¡Estoy atascado!

Mi objetivo es crear un archivo usando UTF-8 como codificación y 8859-1 como CharSet

¿Es esto tan difícil de lograr o solo estoy teniendo un mal día?

Toda ayuda es muy apreciada, ¡gracias!