Domanda

questo aproach senza alcun successo

Il codice che sto utilizzando:

// 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();

il risultato:

entrare descrizione dell'immagine qui

E ' scrivere la distinta non importa cosa, e caratteri speciali (come Æ Ø Å ) non sono corrette: - /

Sono bloccato!

Il mio obiettivo è di creare un file utilizzando UTF-8 , come la codifica e la 8859-1 come CharSet

è così difficile da realizzare o sto solo una brutta giornata?

Ogni aiuto è molto apprezzato, grazie!

È stato utile?

Soluzione

Beh, scrive il BOM perché si sta perché metta, nella linea

Encoding utf8WithoutBom = new UTF8Encoding(true);

true significa che la distinta deve essere emessa, utilizzando

Encoding utf8WithoutBom = new UTF8Encoding(false);

scrive senza BOM.

  

Il mio obiettivo è quello di creare un file usando UTF-8 come codifica e 8859-1 come CharSet

Purtroppo, questo non è possibile, o si scrivere UTF-8 o meno. Cioè fino a quando i personaggi si sta scrivendo sono presenti in ISO Latin-1 che sarà simile a un file ISO 8859-1, ma non appena si uscita un personaggio che non è coperto da ISO 8859-1 (ad esempio ä, ö, ü ) questi personaggi saranno scritti come un carattere multibyte.

Per scrivere vero uso ISO-8859-1:

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

Modifica Dopo il commento di balexandre

Ho usato il seguente codice per il test ...

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();

E il file sembra perfettamente bene. Ovviamente, si dovrebbe usare la stessa codifica durante la lettura del file .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top