Autor Beitrag
bo_91
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 43

Win XP - Win8
C#, PHP, VB, Java
BeitragVerfasst: Di 28.10.08 14:09 
Hallo,

Ich lese ein Textfile aus welches dann in einem String gespeichert wird dies geschieht jedoch mit Unicode UTF-8 das Textfile jedoch ist Westlich(ISO-8859-1) oder Westlich(ISO-8859-15) wie kann ich die so einlesen das es später auch korrekt als Westlich im string ist?

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
StreamReader cr = File.OpenText(@abc);
for (x = 1; (line = cr.ReadLine()) != null; x++)
{
    switch (x)
    {
        case 1: senderAddress = line + "@domain.com";
            break;
        case 2: recipientsAddress1 = line;
            break;
        case 3: recipientsAddress = line;
            break;
        case 4: subject = line;
            break;
        case 5: apath = line;
            break;
        case 6: text = cr.ReadToEnd();
            break;
    }
}


PS: Ich Programmiere erst seit einer Woche C#.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 28.10.08 14:15 
Hallo!

Wenn Du anstatt File.OpenText den StreamReader manuell erzeugst, kannst Du in dessen Konstruktor eine Zeichenkodierung angeben.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
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
BeitragVerfasst: Di 28.10.08 14:25 
Hallo und :welcome:

bei NET musst Du Dir angewöhnen, in der SDK-Doku/MSDN nachzulesen, ob es nicht auch eine passende Überladung gibt. Die Lösung mit StreamReader findest Du im Beispiel zum StreamReader-Konstruktor (String, Encoding).

Zum Einlesen von Texten gibt es meistens einfachere Lösungen. Ich bevorzuge File.ReadAllLines und File.ReadAllText (beides gibt es auch mit Encoding). (Es könnte allerdings sein, dass der StreamReader in Deinem Fall das einfachste ist: Zeile 0 mit Verknüpfung, Zeile 1 bis 4 direkt übertragen, den ganzen Rest zusammenfassen.) Beachte dabei, dass Arrays in NET (im wesentlichen) eine feste Größe haben und im Prinzip unveränderlich sind. Gleiches gilt für Strings; das Umkopieren von vielen oder großen Strings ist zu vermeiden.

Für Objekte wie den StreamReader solltest Du Dir eine Konstruktion mit dem using-Block angewöhnen:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
using(StreamReader sr = new StreamReader(...)) {
   while(string s = sr.ReadLine() != null) {
      //  werte s aus
   }
}

Ein StreamReader muss nach Erledigung geschlossen und beendet werden. Mit dem using-Block wird das automatisiert.

Der '@' gehört zu String-Konstanten, nicht zu String-Variablen.

Ich empfehle auch, Laufindizes bei Schleifen immer bei 0 zu beginnen, da das auch C# macht. (Das ist bei Deiner Lösung natürlich unwichtig.)

Zur Einführung möchte ich Dich noch auf OpenBook Visual C# hinweisen.

Gruß Jürgen
bo_91 Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 43

Win XP - Win8
C#, PHP, VB, Java
BeitragVerfasst: Di 28.10.08 15:01 
Danke für die Hilfe.

Ich hatte mühe mit den äöü was jetzt mit UTF7 fuktioniert.

ausblenden C#-Quelltext
1:
StreamReader cr = new StreamReader(@abc, Encoding.UTF7);					


PS: Hab mir bereits das Visual C# 2008 angeschafft von Galileo Computing.