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

WebClient not decoding properly with correct Content-Type set

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

我添加了 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();

但输出总是 return ç, é 等作为 �:

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")。如果有人提供答案,包括它发生的原因,我会选择它作为接受的答案。

我能够通过替换使其工作:

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");

现在字符可以正确解码了。