Laden...

Wie kann ich einen Filestream mit verschiedene Encoding öffnen (abhängig von Variable)?

Erstellt von Joey2020 vor 3 Jahren Letzter Beitrag vor 3 Jahren 626 Views
J
Joey2020 Themenstarter:in
10 Beiträge seit 2020
vor 3 Jahren
Wie kann ich einen Filestream mit verschiedene Encoding öffnen (abhängig von Variable)?

Hallo Leute,

ich habe folgenden Code:


Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
Encoding encoding = Encoding.GetEncoding(1252);

            if (Encoder == "other") {
                System.IO.StreamReader file1 =
                    new System.IO.StreamReader(@filename1);
            }
            else {
                System.IO.StreamReader file1 =
                    new System.IO.StreamReader(@filename1, encoding);
            }

            while ((line = file1.ReadLine()) != null)
...

Leider geht das nicht weil er in der while-Schleide dann file1 nicht kennt...

Wie kann ich denn, abhängig vom Inhalt der Variable "Encoder" ein File mit verschiedenen Encodings öffnen?
Ich habe auch versucht:


Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);


            if (Encoder == "other") {
               Encoding encoding = Encoding.GetEncoding(1252);
            }
            else {
                Encoding encoding = Encoding.GetEncoding(65001);
            }

            System.IO.StreamReader file1 = new System.IO.StreamReader(@filename1, encoding);
            while ((line = file1.ReadLine()) != null)
...

Auch das geht nicht...:-(

Jemand einen Tipp?

Danke!
Joey

Edit:
Hat sich erledigt!

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
            // Encoding encoding = Encoding.GetEncoding(1252);
            Encoding encoding;

            if (Encoder == "other") {
                encoding = Encoding.GetEncoding(1252);
            }
            else {
                encoding = Encoding.GetEncoding(65001);
            }

So gehts...:-)

T
2.223 Beiträge seit 2008
vor 3 Jahren

Dir scheinen echt Grundlagen zu fehlen.
Dein Problem hier liegt am Scope (Sichtbarkeit) von file1, was nur in dem if/else if Block als lokale Variable sichtbar ist und auch nur dort.
Das gleiche auch mit deinem Encoding Ansatz, auch hier sind die jeweiligen Instanzen nur in den if/else Block sichtbar und somit nur innerhalb der Blöcke nutzbar.

Du solltest dich, wie schon beim anderen Thread von dir, in die Doku einlesen und auch generell in die Grundlagen.
Du scheinst hier wilde Try-Error Versuche zu machen ohne die Grundlagen zu kennen oder zu verstehen.
Dadurch fragst du Dinge, die man mit etwas einlesen auch verstehen kann.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

16.832 Beiträge seit 2008
vor 3 Jahren

.. und bitte nicht sowas:

if (Encoder == "other") {

C# ist eine typisierte Sprache. Da arbeitet man nicht mit Magic Strings.

Bitte schau Dir paar grundlegende Tutorials an, wie .NET, wie OOP und wie C# funktioniert: [FAQ] Wie finde ich den Einstieg in C#?