none
Umlaute werden falsch dargestellt RRS feed

  • Frage

  • Hallo,

    ich lese so eine Datei aus:

    string[] lines = System.IO.File.ReadAllLines("a.txt");

    Allerdings werden die Umlaute bei der Ausgabe des Arrays falsch dargestellt.
    Ich habe es mit UTF-8-Encoding versucht, was allerdings nicht funktioniert hat.
    Ich verwende Visual Studio 2017.

    Dienstag, 7. August 2018 17:56

Antworten

  • Ich bin selber auf die Lösung gekommen: Es sollte für Umlaute nicht UTF8, sondern UTF7 benutzt werden.
    Das sieht dann so aus:

    string[] lines = System.IO.File.ReadAllLines("a.txt", System.Text.Encoding.UTF7);

    • Als Antwort markiert Simgo123 Dienstag, 7. August 2018 19:41
    Dienstag, 7. August 2018 19:40

Alle Antworten

  • Ich bin selber auf die Lösung gekommen: Es sollte für Umlaute nicht UTF8, sondern UTF7 benutzt werden.
    Das sieht dann so aus:

    string[] lines = System.IO.File.ReadAllLines("a.txt", System.Text.Encoding.UTF7);

    • Als Antwort markiert Simgo123 Dienstag, 7. August 2018 19:41
    Dienstag, 7. August 2018 19:40
  • Hi,

    normalerweise sollte es mit Encoding.Default funktionieren.

    So:

    string[] lines = System.IO.File.ReadAllLines(filePath, Encoding.Default);
    
    foreach (var l in lines)
    {
    	Console.WriteLine(l);
    }

    oder so:

    using (StreamReader sr = new StreamReader(filePath, Encoding.Default))
    {
    	while (sr.Peek() >= 0)
    	{
    		Console.WriteLine(sr.ReadLine());
    	}
    }

    als Beispiel mit Ausgabe in Console.

    Gruß


    Freiberufler im Bereich Softwareentwicklung Von der PLC und Robotik zu VB.NET & C#, vorrangig WPF und UWP

    Dienstag, 7. August 2018 19:45
  • normalerweise sollte es mit Encoding.Default funktionieren.

    Ne, das funktioniert natürlich nur dann, wenn Encoding.Default genau das Encoding zurückgibt, mit dem die Datei auch geschrieben wurden.

    @TE: Ob da nun Umlaute enthalten sind oder nicht, hat nichts mit UTF8, UTF7, ... zu tun. Du musst herausfinden, mit welchem Encoding die Datei geschrieben wurde und genau mit diesem Encoding musst Du die Datei auch wieder einlesen. Wenn das beim Schreiben nun zufällig UTF7 war, ok. Aber ansonsten solltest Du denjenigen, der die Datei erstellt hat, fragen, welches Encoding er verwendet hat.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Dienstag, 7. August 2018 20:41
    Moderator