我无法从流中获取某些字符(例如ç
,é
等)。
我添加了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")
。如果有人提供答案,包括它为什么会发生,我会选择它作为已接受的答案。
答案 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");
现在字符正确解码。