Announcement

Collapse
No announcement yet.

Umlaute aus TXT-Datei einlesen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Umlaute aus TXT-Datei einlesen

    Hallo!
    Ich möchte aus einer TXT-Datei Namen auslesen.
    <PRE>
    System.IO.StreamReader srFile;
    srFile=System.IO.File.OpenText(@"C:\TEST\test3.txt ");

    //ganzes File einlesen
    string strFileContent=srFile.ReadToEnd();
    </PRE>

    Das klappt ganz gut, leider werden aber alle Umlaute herausgeschmissen.
    Wie kann ich das verhindern?

    Danke und viele Grüße
    karotte

  • #2
    Hallo !!

    Nimm doch anstatt der Methode File.OpenText doch lieber die StreamReader-Klasse.

    Da kannst du ein Encoding mit angeben.
    Beispiel:
    StreamReader stream = new StreamReader(@"C:\TEST\test3.txt", Encoding.Default);

    Damit sollte es dann gehen.

    Viele Grüsse
    Jör

    Comment


    • #3
      Hallo Jörg!

      ***freu*** Es klappt (habe danach mehrere Stunden gesucht.)

      DANKE!!!

      karott

      Comment


      • #4
        Hallo!
        Es ist noch folgendes Problem aufgetreten:

        Ich lese die Datei nun so ein:

        <PRE>
        StreamReader srFile = new StreamReader(@"C:\TEST\test3.txt",Encoding.Default );
        //ganzes File einlesen
        string strFileContent=srFile.ReadToEnd();
        </PRE>

        Dann splitte ich die Daten und lege sie in ein ArrayList, mit dem ich während der Laufzeit arbeite. Beim verlassen des Programmes lese ich das ArrayList wieder so aus:

        <PRE>
        //alte Datei löschen
        File.Delete(@"C:\TEST\test3.txt");

        //neue Datei anlegen und öffnen
        StreamWriter srFile;
        srFile=File.AppendText(@"C:\TEST\test3.txt");

        //Hilfsarray zum Auslesen anlegen
        string[]wAkt=new string[58];

        for (x=0;intX<arrListe.Count;++intX)
        {
        wAkt=(string[]) arrListe[intX];
        for (intY=0;intY<57;++intY)
        {
        strAlleDaten=strAlleDaten+wAkt[intY]+(',');
        }
        //Alle Arrays in einen String
        strAlleDaten=strAlleDaten+wAkt[57]+"\r\n";
        }

        //Sammelstring in Datei speichern
        srFile.WriteLine(strAlleDaten);

        //Puffer leeren
        srFile.Flush();

        </PRE>

        Nachdem ich die Anwendung schließe, befinden sich in meiner Textdatei test3.txt die normalen Umlaute (per Editor angesehen).

        Beim erneuten Aufruf der Datei durch die Anwendung erscheinen nun statt der Umlaute Sonderzeichen.

        Ich habe schon verschiedenes ausprobiert.

        Weiß jemand Rat?
        Würde mich über Hilfe sehr freuen!!!
        Viele Grüße
        karott

        Comment


        • #5
          Hallo,

          vielleicht hilft ja folgendes:

          StreamWriter sw = new StreamWriter(@"C:\Test\test3.txt", false); // Das false gibt an, das das bestehende File überschrieben wird.<br>

          sw.Encoding = Encoding.Default;<br>
          ...<br>
          sw.WriteLine(strAlleDaten);<br>
          sw.Close();<br>
          <br>
          Es könnte passieren, dass im File nach dem Schreiben nur Sonderzeichen stehen, aber nach dem erneuten Einlesen des Files, sollten alle Umlaute wieder vorhanden sein.

          Viele Grüsse
          Jör

          Comment


          • #6
            Mit folgendem müsste es gehen. Ist aus dem ASP.NET Kochbuch Seite 462:

            reader = new StreamReader(file, new UTF7Encoding());
            contents = reader.ReadToEnd();
            Response.Write("UTF8-Encoding: ");
            Response.Write(contents);
            Response.Write("<br><br>");

            Ciao

            Benn

            Comment

            Working...
            X