Autor Beitrag
blumione
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Fr 28.05.10 13:21 
Hallo zusammen

Wie kann ich bevor ich eine Webseite fehlerfrei auslesen. Damit meine ich das richtige Encoding benutzen:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
                WebClient wc = new WebClient();
                wc.Headers["ContentType"] = "application/x-www-form-urlencoded";
                wc.Headers["UserAgent"] = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3";
                wc.Headers["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
                wc.Headers["Accept-Language"] = "de-de,de;q=0.8,en-us;q=0.5,en;q=0.3";
                wc.Headers["Keep-Alive"] = "115";


Mit wc.DownloadString(url); hole ich dann den Quelltext.

Wenn die Webseite nicht in UTF-8 encodiert ist. Klappt das wunderbar.
Wenn aber doch, dann funktioniert es über

ausblenden C#-Quelltext
1:
wc.Encoding = Encoding.GetEncoding("UTF-8");					


Jetzt möchte ich natürlich um das unterscheiden zu können das Encoding auslesen. Wenn ich es über wc.Encoding.EncodingName auslese erhalte ich nur Westeuropäsisch...

Wie kann ich jetzt das Charset herausfinden?
Wäre praktisch, wenn das über das WebClient ginge dann müsste ich nicht immer 2 Anfragen ausführen. (1. Prüfe welches Charset, 2. Quelltext auslesen)

Grüsse
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Fr 28.05.10 14:30 
WebClient scheint den entsprechenden HTTP-Header zu ignorieren, also musst du leider doch HttpWebRequest/Response benutzen. GetResponseStream fütterst du dann in in einen StreamReader, den du mit ContentEncoding erstellt hast.

_________________
>λ=