Probleme mit Umlaute



  • Hey,

    ich möchte in einer Datei (txt) bestimmte stellen ersetzen. Mein Code funktioniert auch einwandfrei, aber leider werden die Umlaute nicht richtig angezeigt...

    private void editFile(string fileName) //test.txt
            {
                string filePath = @"test\" + fileName;
    
                StreamReader inputStreamReader = File.OpenText(filePath);
                string fileContent = File.ReadAllText(filePath);
                inputStreamReader.Close();
    
                fileContent = fileContent.Replace("[firstName]", this._firstName);
                fileContent = fileContent.Replace("[lastName]", this._lastName);
                fileContent = fileContent.Replace("[function]", this._function);
    
                StreamWriter outputStreamWriter = File.CreateText(filePath);
                outputStreamWriter.Write(fileContent);
                outputStreamWriter.Close();
            }
    

    Und in der Textdatei steht:

    Hallo mein Name ist [firstName] [lastName].
    Meine Funktion ist [function].

    Die beiden Methoden OpenText und CreateText arbeiten mit einer UTF-8 Codierung. Wie kann ich mein Vorhaben realisieren, sodass das Programm auch mit Umlauten arbeiten kann?



  • Blacky666 schrieb:

    Die beiden Methoden OpenText und CreateText arbeiten mit einer UTF-8 Codierung. Wie kann ich mein Vorhaben realisieren, sodass das Programm auch mit Umlauten arbeiten kann?

    Achte darauf, dass du diese Textdatei auch mit UTF-8 Codierung abspeicherst.





  • Ich habe den Code leicht abgewandelt, erziele aber nicht mein geünschtes Ergebnis:

    private void editFile(string fileName) //test.txt
            {
                string filePath = @"test\" + fileName;
    
                StreamReader inputStreamReader = new StreamReader(File.OpenRead(filePath), System.Text.Encoding.Unicode);
                string fileContent = File.ReadAllText(filePath); // fileContent -> es werden die Umlaute falsch angzeigt
                inputStreamReader.Close();
    
                fileContent = fileContent.Replace("[firstName]", this._firstName);
                fileContent = fileContent.Replace("[lastName]", this._lastName);
                fileContent = fileContent.Replace("[function]", this._function);
    
                StreamWriter outputStreamWriter = File.CreateText(filePath);
                outputStreamWriter.Write(fileContent);
                outputStreamWriter.Close();
            }
    


  • Na ja, wenn die Textdatei nicht im Unicode-Encoding abgespeichert wurde, dann ist das kein Wunder. Schau einfach mal nach, in welchem Encoding du die Datei abgespeichert hast (z.B. in einem Editor diverse Zeichensätze ausprobieren, bis es richtig aussieht).
    Wenn du die Datei mit Notepad erstellt hast und einfach gespeichert hast, ohne etwas einzustellen, dann war das im ANSI-Format. Dafür brauchst du System.Text.Encoding.Default.

    Ich empfehle zur allgemeinen Lektüre auch: http://www.joelonsoftware.com/articles/Unicode.html



  • GPC schrieb:

    Na ja, wenn die Textdatei nicht im Unicode-Encoding abgespeichert wurde, dann ist das kein Wunder. Schau einfach mal nach, in welchem Encoding du die Datei abgespeichert hast (z.B. in einem Editor diverse Zeichensätze ausprobieren, bis es richtig aussieht).
    Wenn du die Datei mit Notepad erstellt hast und einfach gespeichert hast, ohne etwas einzustellen, dann war das im ANSI-Format. Dafür brauchst du System.Text.Encoding.Default.

    Ich empfehle zur allgemeinen Lektüre auch: http://www.joelonsoftware.com/articles/Unicode.html

    Ok klingt logisch und es klappt auch. Danke für die Hilfe. 🙂


Anmelden zum Antworten