我对编码有问题。当我得到网站的源代码时,我有:

我将编码设置为UTF8,如下所示:
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
string sourceCode = reader.ReadToEnd();谢谢你的帮忙!
发布于 2011-04-22 21:14:54
尝试使用指定的编码:
Encoding encoding;
try
{
encoding = Encoding.GetEncoding(response.CharacterSet);
}
catch (ArgumentException)
{
// Cannot determine encoding, use dafault
encoding = Encoding.UTF8;
}
StreamReader reader = new StreamReader(response.GetResponseStream(), encoding);
string sourceCode = reader.ReadToEnd();如果您正在以某种方式接受gzip,这可能会有所帮助:(我自己还没有尝试过它,诚然,它没有多大意义,因为您的编码不是gzip?!)
request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;发布于 2016-02-09 22:09:23
我也有同样的问题,我试着改变编码,从源代码到结果,我什么都没有得到。最后,我遇到了一条线索,这条线索引导我遵循……看看这里..。.NET: Is it possible to get HttpWebRequest to automatically decompress gzip'd responses?
在从请求中检索响应之前,您需要使用以下代码。
rqst.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;因为一旦我们使用接受编码'gzip‘或'deflate',数据就会被压缩,并变成我们无法读取的数据。所以我们需要解压它们。
发布于 2011-04-22 21:13:16
但是响应可能不是UTF-8。您是否检查了response对象的CharacterSet和ContentType属性,以确保使用正确的编码?
在任何情况下,这两个字符看起来都像值03和08的代码页437个字符。看起来你的数据流中有一些二进制数据。
为了进行调试,我建议您使用Stream.Read将响应中的前几个字节读入一个字节数组,然后检查这些值以查看所获得的值。
https://stackoverflow.com/questions/5755635
复制相似问题