none
Keine Umlaute bei Encoding.UTF8 RRS feed

  • Frage

  • Hallo,

    Ich lese mit  

    using (StreamReader reader = new(Path, Encoding.UTF8))

    in meiner WPF-App (.NET) eine CSV-Datei meiner Bank ein und möchte deren Inhalt weiterverarbeiten. Leider werden die Umlaute und das EURO-Symbol nicht korrekt angezeigt.

    Ich habe alle Encoding-Werte ohne Erfolg probiert. (Bei UTF7 und Latin1 werden zumindest die Umlaute korrekt dargestellt.)

    reader.CurrentEncoding.BodyName  

    liefert: utf-8 (natürlich habe ich bei diesem Versuch Encoding.UTF8 nicht verwendet)

    Alle anderen Anwendungen (z.B.: Excel, Editor, alte Delphi-Anwendungen) zeigen die Datei korrekt an. Also kann es nicht an der Datei liegen

    Was mache ich falsch?

    Grüße Klaus

    Mittwoch, 14. April 2021 12:45

Antworten

  • Hallo Klaus,

    kannst Du denn mit dieser Datei das Problem noch reproduzieren?

    Bei geht es mit Windows-1252.

    string csv = File.ReadAllText( @"X:\Ordner\Datei.csv", Encoding.GetEncoding( "Windows-1252" ) );

    HTH


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


    • Bearbeitet Stefan Falz Mittwoch, 14. April 2021 21:00
    • Als Antwort markiert Klaus Raabe Donnerstag, 15. April 2021 09:08
    Mittwoch, 14. April 2021 20:59

Alle Antworten

  • Hi,

    evtl. ist es ISO-8859-15.


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

    Mittwoch, 14. April 2021 12:48
  • Hallo Stefan,

    ich habe Deinen Vorschlag mit folgenden Code ausprobiert:

                var instance = CodePagesEncodingProvider.Instance;
                Encoding.RegisterProvider(instance);
                var iso_8859_15 = Encoding.GetEncoding("ISO-8859-15");
                using (StreamReader reader = new(Filename, iso_8859_15))
    

    leider ohne Erfolg. Auch hier wird, wie bei Latin1, das "€" nicht angezeigt.

    Ich glaube ich werde auf das auslesen des Symbol verzichten, da die Werte in der Datei immer in der gleichen  Währung sind.

    Gruß Klaus

    Mittwoch, 14. April 2021 16:08
  • Hallo Klaus,

    stell die Datei doch mal gezippt zum Download zur Verfügung. (Ggfs. gekürzt aber wichtig: mit denselben Inhalten, die dir Probleme bereiten)


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

    Mittwoch, 14. April 2021 17:59
  • Hallo Stefan,

    Eine stark gekürzte Version der Datei kannst du hier herunterladen. Die Daten habe ich mit dem Windows-Editor gelöscht.  Hoffentlich hat er das Format nicht geändert.

    Grüße, Klaus.

    Mittwoch, 14. April 2021 18:51
  • Hallo Klaus,

    kannst Du denn mit dieser Datei das Problem noch reproduzieren?

    Bei geht es mit Windows-1252.

    string csv = File.ReadAllText( @"X:\Ordner\Datei.csv", Encoding.GetEncoding( "Windows-1252" ) );

    HTH


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


    • Bearbeitet Stefan Falz Mittwoch, 14. April 2021 21:00
    • Als Antwort markiert Klaus Raabe Donnerstag, 15. April 2021 09:08
    Mittwoch, 14. April 2021 20:59
  • Hallo Stefan,

    ja, Windows-1252 ist die Lösung!

    Ich habe jetzt mal die Datei in einer Schleife von Encoding.GetEncodings() mit allen CodePages getestet und Deinen Vorschlag bestätigt. Windows-1250/52/54/58 zeigten die richtige Formatierung an. Auf Grund unserer geografischen Lage werde ich 1252 verwenden.

    Wichtig ist:

    Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

    damit auf diese Codepage zugegriffen werden kann.

    Danke Stefan,  Du hast mir mir sehr geholfen.

    Grüße Klaus

    Donnerstag, 15. April 2021 09:08