Autor |
Beitrag |
DevInet
      
Beiträge: 43
Win XP, Win 7 Prof., Linux Mandriva
C#(VS 2010), Java, php
|
Verfasst: Do 27.05.10 16:46
Hallo alle miteinander.
Ich arbeite momentan an einem Frontend zur Mail-Footer-Generierung. Nun werden die Namen der Nutzer und die Events in zwei separaten Dateien gespeichert. Bis hier gibts auch keine Probleme. Aber sobald ein Name oder ein Event ein ä, ü, ö oder ß enthält, schreibt das Frontend beim speichern von Änderungen nurnoch Müll in die Dateien. Ich arbeite mit dem Streamreader und dem Streamwriter. Ich habe es schon mit dem StreamWriter.Encoding = System.Text.ASCIIEncoding und UTF8 versucht. Beide male ohne Erfolg. Hat jemand von euch ne Idee?
Mfg DevInet
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Do 27.05.10 17:07
Du musst den exakten Moment ermitteln, an dem das Encoding nicht mehr passt. Wo kommt der Input her, von einer GUI/Webseite? Hast du mit einem Editor geschaut, ob die Dateien selbst schon nicht mehr stimmen, oder ob das erst beim erneuten Einlesen passiert?
PS: Der Titel ist nicht gerade aussagekräftig  .
_________________ >λ=
|
|
DevInet 
      
Beiträge: 43
Win XP, Win 7 Prof., Linux Mandriva
C#(VS 2010), Java, php
|
Verfasst: Fr 28.05.10 11:09
Der Inhalt kommt aus zwei CSV-Dateien. Die sind auch in Ordnung. Das ganze passiert erst beim einlesen.
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Fr 28.05.10 11:28
Das heißt, in der Variablen direkt nach dem Einlesen steht es schon falsch drin, der Output hat damit gar nichts zu tun? Dann kann es eigentlich nur noch daran liegen, dass die CSV-Dateien nicht UTF8 sind oder der StreamReader anders eingestellt ist.
_________________ >λ=
|
|
DevInet 
      
Beiträge: 43
Win XP, Win 7 Prof., Linux Mandriva
C#(VS 2010), Java, php
|
Verfasst: Fr 28.05.10 13:30
Ex akt. Ich lese die Dateien in eine Listbox ein, damit ich die Daten hinterher ändern kann und auch sehe, ob die änderungen korrekt übernommen wurden. nun werden die entsprechenden zeichen schon beim einlesen falsch dargestellt und ersetzt.
|
|
DevInet 
      
Beiträge: 43
Win XP, Win 7 Prof., Linux Mandriva
C#(VS 2010), Java, php
|
Verfasst: Mo 31.05.10 11:37
Ich habe mir nochmal den Quellcode angesehen und hab da mal ne Frage. Vielleicht ist das ja der Kern meines Problems:
private void btn1_Click(object sender, EventArgs e)
{
//Löschen des aktuellen Inhalts aus der ListBox
lstBox1.Items.Clear();
//Einlesen der Mitarbeiter-Liste aus der Datei mitarbeiter.csv
StreamReader mread = new StreamReader("mitarbeiter.csv",System.Text.Encoding.ASCII , true);
{
string line;
//Überprüfung auf Leerzeilen
while ((line = mread.ReadLine()) != null)
{
//Ausgabe der Liste in der ListBox
lstBox1.Items.Add(line);
}
}
mread.Close();
}
Habe ich den Encoding-Befehl an der richtigen stelle und fehlt da was oder ist alles soweit richtig?
Danke für die Bemühungen im vorraus.
Mfg DevInet
|
|
DevInet 
      
Beiträge: 43
Win XP, Win 7 Prof., Linux Mandriva
C#(VS 2010), Java, php
|
Verfasst: Mo 31.05.10 11:54
Hab das Problem gefunden. UTF7 ist anscheinend der Richtige "Code"(?) für mein Problem gewesen.
@Kha: Danke für deine Geduld.
Mfg DevInet
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Mo 31.05.10 12:37
Nur noch als allgemeiner Hinweis: Encoding.ASCII ist zum Einlesen aus einer Datei fast immer falsch. Wie aus der SDK-Doku/MSDN/Hilfe hervorgeht, bezieht sich das nur auf 7-bit-ASCII. Meistens passt Default (nämlich die Win-Version des Rechners), sonst versprechen Versuche mit den UTF-Varianten sowie 1250, 1251, 1252 Erfolg.
Gruß Jürgen
|
|