kein Umlaute/Sonderzeichen mit dem Textreader
-
Hallo,
folgender kleiner Testcode
System.IO.TextReader Textfile = System.IO.File.OpenText( "C:\\test.txt"); string text = Textfile.ReadLine(); System.Windows.Forms.MessageBox.Show(text, " Ohne Umlaute :( " );
in der Datei steht folgendes: ä (ae) € (euro) ü (ue)
die MessageBox und Debuganzeigen liefern mir folgendes : (ae) (euro) (ue)Das stört dann doch irgendwie. Wie kann ich den Textreader dazu bringen mir Umlaute und Sonderzeichen auch auszulesen? Oder welche funktionierende Alternative habe ich? Bitte sagt mir nicht das es darauf hinausläuft, dass ich die Datei im Binärmodus öffnen und die Zeilenumbrüche selber parsen muss.
Da hab ich keinen Bock drauf
-
Probier mal die Datei in ein FileStream zu laden und den Inhalt der Datei mit UTF7 zu dekodieren.
€ gibt es in ASCII nicht und Umlaute sind dort problematisch und wenn du eine UTF7 kodierte Datei mit UTF8 (was die System.IO.File.OpenText-Methode verwendet) tu dekodieren, gehen Informationen verloren.
-
System.IO.TextReader Text = new System.IO.StreamReader("C:\\test.txt",System.Text.Encoding.UTF7); string Line = Text.ReadLine(); System.Windows.Forms.MessageBox.Show(Line, " Ohne € :( " );
Thx.
So hab ich immerhin die Umlaute. Das Euro-zeichen sträubt sich leider noch ...
-
Kannst es ja noch mit System.Text.Encoding.Unicode und System.Text.Encoding.BigEndianUnicode ausprobieren.
Wo kommt die Textdatei denn überhaupt her? Hast du vielleicht die Möglichkeit die Wahl der Kodierung zu beeinflussen?
-
Kannst es ja noch mit System.Text.Encoding.Unicode und System.Text.Encoding.BigEndianUnicode ausprobieren.
Alles andere was ich so in der Encoding-Klasse gefunden habe, habe ich auch schon ausprobiert. GetEncoding und seinen Parameter werde ich mir noch mal genauer ansehen ...
Wo kommt die Textdatei denn überhaupt her? Hast du vielleicht die Möglichkeit die Wahl der Kodierung zu beeinflussen?
Also das ist nur ein Testfile von mir.
Die Dateien um die es eigentlich geht sind von einem Kunden, der aus einer Datenbank ein Reihe von CSV-Dateien exportiert.
Wenn ich so eine CSV in Notepad aufmache sind dort Umlaute und Eurozeichen richtig dargestellt.
-
System.IO.TextReader Textfile = new StreamReader("C:\\test.txt", System.Text.Encoding.Default); string text = Textfile.ReadLine(); System.Windows.Forms.MessageBox.Show(text, " Ohne Umlaute :( " );
Funktioniert bei mir.
-
Komisch. Notepad unterstützt nämlich auch nur ASCII, UTF8, Unicode und UnicodeBigEndian.
Also wenn du wirklich keinen passenden Codec findest würde ich mir mal den Integer-Wert, der nicht dastellbaren Zeichen holen und das ganze dann mit sowas in der Art...
ausgelsenerText.Replace(Convert.ToChar(ermittelterIntWertVonEuro).ToString(), "€";
...bereinigen.
-
Mit Encoding.Default passts übrigens tatsächlich.
In meiner Ahnungslosigkeit bin ich nicht auf die Idee gekommen, dass Encoding.Default ein anderes Ergebnis bringen könnte als gar keine Encoding-Angabe ...
:xmas2: