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:

introducir descripción de la imagen aquí

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!

¿Fue útil?

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 .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top