none
Encodingfehler in heruntergeladener HTML-Datei RRS feed

  • Frage

  • Hallo,

    ich programmiere gerade eine App, die den Mensa Plan an meiner FH anzeigen soll. Dazu lädt es den Speiseplan von http://www.studentenwerk-potsdam.de/speiseplan.html und parst den HTML-Quelltext.

    Das Problem an der Sache ist, dass er die Umlaute mit einem Fragezeichen-in-Karo-Symbol ersetzt. Das macht es mir unmöglich, nach diesen Zeichen zu suchen und zu ersetzen.

    Ich habe es bereits mit Encoding.GetEncoding("ISO-8859-1") probiert, aber egal welches Encoding ich einstelle, er ersetzt die Umlaute immer. Wie muss ich an diese Sache herangehen?

    Gruß, Laurin

    Sonntag, 25. September 2011 13:32

Antworten

  • Hi,

    schon mal probiert dem Konstruktor des StreamReaders auch noch ein Encoding mitzugeben? Vielleicht hilft das bereits.

     

    Gruß, Peter


    This posting is provided "AS IS" with no warranties, and confers no rights.
    • Als Antwort markiert PeterNowak Montag, 26. September 2011 12:03
    Montag, 26. September 2011 06:01

Alle Antworten

  • Du musst das Encoding des zu empfangenen Strings (oder Streams) auf UFT8 setzen:

    WebClient abfrage = new WebClient();
    abfrage.Encoding = Encoding.UTF8;
    abfrage.DownloadStringCompleted += Abfrage_DownloadStringCompleted;
    ...
    

    Sonntag, 25. September 2011 21:47
  • Leider hilft das nicht. Die Encodingfehler kommen immer noch. Probiert habe ich bis jetzt UTF-8, Unicode und ISO 8859-1.

    Ich verstehe nicht woran, das liegt. Wird bei der Webseite irgendein exotisches Encoding verwendet? Das dürfte eigentlich nicht sein.

     

    Das ist mein Downloadcode im Moment. Vielleicht liegt ja darin irgendwo der Fehler.

    // [...]
    
        WebClient web = new WebClient();
        web.Encoding = Encoding.UTF8;
        web.OpenReadAsync(new Uri("http://www.studentenwerk-potsdam.de/speiseplan.html"));
        web.OpenReadCompleted += new OpenReadCompletedEventHandler(web_OpenReadCompleted);
    }
    
    void web_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
    {
        string response;
    
        using (var reader = new StreamReader(e.Result))
        {
            response = reader.ReadToEnd();
        }
    
    // Parsen von response usw.
    
    // [...]
    


    Montag, 26. September 2011 02:24
  • Hi,

    schon mal probiert dem Konstruktor des StreamReaders auch noch ein Encoding mitzugeben? Vielleicht hilft das bereits.

     

    Gruß, Peter


    This posting is provided "AS IS" with no warranties, and confers no rights.
    • Als Antwort markiert PeterNowak Montag, 26. September 2011 12:03
    Montag, 26. September 2011 06:01
  • Zusätzlich: Das Encoding ist iso-8859-1.

     

    Gruß, Peter


    This posting is provided "AS IS" with no warranties, and confers no rights.
    Montag, 26. September 2011 06:39
  • Das hat es gebracht. Mir ist nicht aufgefallen, dass man beim StreamReader auch ein Encoding angeben kann.

    Die Zeile muss so aussehen, dann erkennt er die Umlaute korrekt:

    using (var reader = new StreamReader(e.Result, Encoding.GetEncoding("iso-8859-1")))
    

    Vielen Dank für eure Hilfe. :)

    Montag, 26. September 2011 11:54