HttpWebRequest-Encoding - UTF-8
Ich bin versucht zu Holen von Daten aus einer web-Seite, aber ich konfrontiert Charakter-problem. Die web-Seite ist in utf-8-format und multi-Sprache, in diesem Fall kann ich Holen die Englisch-basierte senteces/Daten ohne irgendein problem, aber für Italienisch, Spanisch und Türkisch-Daten, ich bin immer falsche Zeichen.
wenn ich die gespeicherte html-Datei für die text-Codierung es sagt : windows-1254
Wie Sie sehen können in meiner Methode habe ich versucht zu lösen das problem, indem Sie in streamreader ;
Encoding.GetEncoding("utf-8")
Encoding.Default
Encoding.UTF8
Httpwebrequest :
string postdata = "username" + usern + "&pass=" + pass";
byte[] bytes = new UTF8Encoding().GetBytes(postdata);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.*******.com/login.php");
request.Method = "POST";
request.KeepAlive = true;
request.CookieContainer = cont;
request.AutomaticDecompression = DecompressionMethods.Deflate;
request.CookieContainer.Add(cok);
request.ContentType = "text/html; charset=utf-8";
request.UserAgent = "Mozilla/2.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/9.0";
request.ContentLength = bytes.Length;
request.GetRequestStream().Write(bytes, 0, bytes.Length);
HttpWebResponse response = null;
response = (HttpWebResponse)request.GetResponse();
StreamReader _str2 = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8"));
string html = _str2.ReadToEnd();
File.WriteAllText("login_response.html", html);
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, dein Fehler ist nicht auf das Holen, aber auf dem schreiben der neuen Datei, so dass anstelle der Verwendung
File.WriteAllText
Sie vielleicht anschauen sollte:Wie schreibt man einen text-Datei in C# mit einer anderen Codepage als utf-8?
d.h.
(Beispiel von der Seite).
--- EDIT :
Können Sie das gleiche tun auf die Datei.WriteAllText offenbar: https://msdn.microsoft.com/en-us/library/ms143376(v=vs. 110).aspx