WebClient无法使用正确的Content-Type集正确解码

时间:2017-01-10 13:37:51

标签: c# webclient

我无法从流中获取某些字符(例如çé等)。

我添加了client.Headers.Add("Content-Type", "text/html; charset=windows-1252");,因为该网页有<meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />

WebClient client = new WebClient();
client.Headers.Add("user-agent", "Mozilla/5.0 (Windows NT 6.1; rv:50.0) Gecko/20100101 Firefox/50.0");
client.Headers.Add("Accept-Language", "en-US,en;q=0.5");
client.Headers.Add("Accept-Encoding", "gzip, deflate");
client.Headers.Add("Content-Type", "text/html; charset=windows-1252"); //THIS IS IN <meta> TAG of page.

Stream data = client.OpenRead("http://url");
StreamReader reader = new StreamReader(data); string s = reader.ReadToEnd();
data.Close(); reader.Close();

但输出总是以{1:

的形式返回çé
Diogo Afonso, Bel�m 1:33:06 PM
Pra�a de Dio, Bel�m 1:33:05 PM

我的问题是,这是如何通过正确的编码发生的?

编辑:我能够通过Stream data = client.OpenRead (...) Close();替换client.DownloadString("http://url")。如果有人提供答案,包括它为什么会发生,我会选择它作为已接受的答案。

1 个答案:

答案 0 :(得分:0)

我能够通过替换:

使其成功
Stream data = client.OpenRead("http://url");
StreamReader reader = new StreamReader(data); string s = reader.ReadToEnd();
data.Close(); reader.Close();

string s = client.DownloadString("http://url");

现在字符正确解码。