2014-03-12 10 views
5

Ich bin ein .NET-Entwickler und wurde gebeten, eine Anwendung zu tun, die HTML-Dateien in C# in ANSI konvertiert.UTF-8 zu ANSI-Konvertierung mit C#

ANSI ist erforderlich, da die konvertierten Dateien in einer Visual Fox Pro-Anwendung ausgeführt werden.

Die grundlegende Logik ist bereit, das Problem mit der Konvertierung selbst ist.

Ich habe diesen Code versucht: http://social.msdn.microsoft.com/Forums/pt-BR/026ddda3-9bd1-4502-b445-e2a1cc88345d/convert-file-from-utf8-to-ansi?forum=csharplanguage aber wenn ich es auf editplus überprüft die Datei ist immer noch nicht in ANSI konvertiert und sogar am schlimmsten die Einrückung ist alles durcheinander.

Was ich tun soll, ist eine Datei wie editplus konvertieren, es behält den Einzug des Dokuments und kann jede Datei von UTF8 zu ANSI konvertieren.

Der springende Punkt ist, dass ich mit hunderten von HTML-Dateien arbeite, so dass ich nicht einfach eins nach dem anderen mit einem Texteditor machen kann.

Wie kann die Konvertierung durchgeführt werden?

Gibt es eine Möglichkeit, es zu konvertieren und die Einrückung wie Editplus beizubehalten?

Für die Sonderzeichen wie: "ã, ão, é, í ..." korrigiere ich es vor der Konvertierung. Ist das der richtige Ansatz?

+1

[. "ANSI" ist ein vager Begriff] (http://stackoverflow.com/questions/701882/what-is-ansi-format) 1. Was meinst du eigentlich? 2. Wissen Sie [das absolute Minimum Jeder Software-Entwickler absolut positiv über Unicode und Zeichensätze wissen müssen (keine Ausreden!)] (Http://www.joelonsoftware.com/articles/Unicode.html)? 3. Wie sieht dein Code aus (ein Link zu einem Forum mit verschiedenen Codierungen gibt uns nicht das vollständige Bild)? –

+1

Verwenden Sie Encoding.Default, nicht ASCII. Es ist natürlich eine verlustreiche Umwandlung, Sie können kein optimales Ergebnis erwarten. –

+0

Danke für den Artikel, es ist eine für die Codierung von Wissen zu lesen. –

Antwort

8

Verwendung Standard-Codierung statt ASCII:

StreamReader sr = new StreamReader(infile); 
StreamWriter sw = new StreamWriter(outfile, false, Encoding.Default); 

// invoke the ReadToEnd method 
sw.WriteLine(sr.ReadToEnd()); 

sw.Close(); 
sr.Close(); 
+0

Ich sah nicht voraus, dass der Standard die ANSI-Codierung war. Ein riesiger Dank Mann. Beantworten meiner Fragen könnte dies in Zukunft jemand helfen: Der oben gezeigte Weg schadet nicht die Einrückung und Formatierung. Der beste Weg, um eine utf-8 in das ANSI zu konvertieren ist, zunächst die Akzente zu korrigieren, wenn Sie benötigen und, nachdem es die richtig Umwandlung Encoding.Default mit tun. –