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");
现在字符可以正确解码了。
我无法从流中获取某些字符(如 ç
、é
等)。
我添加了 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");
现在字符可以正确解码了。