2009-07-27 9 views
2

Ich muss eine CSV-Datei bearbeiten, das Problem ist, dass meine speziellen Zeichen wie ó ã ç wird vermasselt.CSV-Datei lesen. Special Chars Problem

Heres ist ein peice meines Code:

static void ReadFromFile(){ 

     StreamReader SR = new StreamReader("c:\\Users\\Levy\\Documents\\Vale\\Base\\Desknote.csv", Encoding.Default); 

     StreamWriter SW = new StreamWriter("c:\\Users\\Levy\\Documents\\Vale\\Base\\Desknote_Ed.csv", true, System.Text.Encoding.GetEncoding("Windows-1252")); 

     string S; 
     char C='a'; 
     int i=0; 
     S=SR.ReadLine(); 
     SW.Write(S); 

} 

AKTUALISIERUNG:

Well im der Lage, die Zeichen zu lesen, indem Encoding.Default auf dem Objekt Stramreader verwenden. (ich kann sie auf der Konsole anzeigen)

Ich habe versucht mit ISO 8859-1 und CP-1252 auf dem Schreiber, aber meine Ausgabe ist immer noch vermasselt.

Dank alle

Antwort

0

Ich denke, der Schlüssel ist wirklich die Codierung. Wie lautet die Textkodierung der Eingabedaten?

0

Was ist, wenn Sie die ganze Datei lesen und auf \ r \ n teilen?

3

Sie haben die Eingabedatei als ASCII deklariert, was eindeutig nicht der Fall ist. Ändern Sie es in so etwas wie iso-8859-1 oder CP-1252 (Windows Latin-1) und Sie könnten mehr Glück haben ...

Dies löst nicht das grundlegende Problem, dass es kein Äquivalent für ó ã ç gibt in ASCII, was wirst du damit machen? Einfach wegwerfen? Oder sollten Sie sicherstellen, dass Sie stattdessen eine universellere Codierung wie UTF-8 für Ihre Ausgabe verwenden?

Am besten ermitteln Sie anhand Ihrer Quelle, welche Kodierung für diese Datei verwendet wurde, und fragen Sie den Empfänger Ihrer Datei, was für die Ausgabe akzeptabel ist. Der einzige Weg, das herauszufinden, ist ASK, weil es verschiedene Kodierungen gibt, die auf der Oberfläche ähnlich aussehen.

1

Hier gibt es zwei Orte, die Sie Einschrauben werden können,

  1. Beim Lesen (die von Natur aus Schrauben der nächste Schritt)
  2. Während

prüfen für die Quelldatei Codierung Schreiben (Sie können versuchen, Notepad2, die eine Statusleiste, die die Codierung zeigt) und verwenden Sie beim Lesen aus der Quelldatei verwenden.

Nachdem Sie die Datei erfolgreich gelesen haben, schreiben Sie mit UTF-8, um diese Zeichen in der Ausgabedatei beizubehalten.

1

Von dem, was Sie gesagt haben:

  1. Sie verwalten die Daten korrekt zu lesen, das heißt, Sie haben die richtige Annahme über die Codierung der Eingabedatei gemacht (nicht, dass die Annahme, Codierung ist eine gute Sache). Dies liegt daran, dass Sie angegeben haben, dass Sie die Zeichenfolge in die Konsole schreiben können und die Eingabe übereinstimmt.

  2. Die Daten der Ausgabedatei stimmen irgendwie nicht, wenn Sie sie anzeigen.

Aber, da Sie die Daten richtig gelesen haben, und die Ausgabecodierung, die Sie (Windows-1252) verwenden ist in der Tat die Zeichen unterstützen, die Sie angegeben haben (gibt es andere?), nämlich ó, ã und ç, dann gibt es keinen Grund, warum die Datei nicht korrekt geschrieben werden sollte.

Also, wie wäre es mit der Art und Weise, in der Sie die Schlussfolgerung ziehen, dass die Ausgabedatei falsch geschrieben wird? Ist das Tool, das Sie verwenden, um die Ausgabe unter der Annahme eine bestimmte Codierung anzuzeigen?