2008-12-17 7 views
36

Ich möchte eine Textdatei schreiben.Wie schreibe ich eine Textdatei in C# mit einer anderen Codepage als UTF-8?

Anstelle der Standard-UTF-8, mag ich es als ISO-8859-1 codiert schreiben, die Codepage ist 28591. Ich habe keine Ahnung, wie dies zu tun ...

Ich schreibe aus meine Datei mit folgendem sehr einfachen Code:

using (StreamWriter sw = File.CreateText(myfilename)) 
{ 
    sw.WriteLine("my text..."); 
    sw.Close(); 
} 

Antwort

63
using System.IO; 
using System.Text; 

using (StreamWriter sw = new StreamWriter(File.Open(myfilename, FileMode.Create), Encoding.WhateverYouWant)) 
{  
    sw.WriteLine("my text...");  
} 

Eine alternative Möglichkeit, Ihre Codierung des Erhaltens:

using System.IO; 
using System.Text; 

using (var sw = new StreamWriter(File.Open(@"c:\myfile.txt", FileMode.CreateNew), Encoding.GetEncoding("iso-8859-1"))) { 
    sw.WriteLine("my text...");    
} 

Überprüfen Sie die Dokumentation für den Stream Konstruktor aus.

+0

Guter Punkt, dass Sie es auch im Konstruktor tun konnten. –

+1

Kann "was auch immer ich will" eine Codeseitenzahl oder ... sein? die automatische Vervollständigung der Funktion in MS Visual C# gibt mir keine "iso-8859-1" Option ... nur die UTF8, UTF16, etc ... – adeena

+0

Encoding.GetEncoding ("iso-8859-1") – frenchone

20

Einfach!

System.IO.File.WriteAllText(path, text, Encoding.GetEncoding(28591)); 
2

Wickeln Sie Ihre Stream mit Filestream, auf diese Weise:

string fileName = "test.txt"; 
string textToAdd = "Example text in file"; 
Encoding encoding = Encoding.GetEncoding("ISO-8859-1"); //Or any other Encoding 

using (FileStream fs = new FileStream(fileName, FileMode.CreateNew)) 
{ 
    using (StreamWriter writer = new StreamWriter(fs, encoding)) 
    { 
     writer.Write(textToAdd); 
    } 
} 

Look at MSDN