C# HttpWebRequest StreamReader失败,utf-8不是受支持的编码名称错误
我使用以下代码从网页中检索数据。它在大多数页面中都非常有效,但在某些页面中会抛出错误,如下所示C# HttpWebRequest StreamReader失败,utf-8不是受支持的编码名称错误,c#,encoding,utf-8,streamreader,C#,Encoding,Utf 8,Streamreader,我使用以下代码从网页中检索数据。它在大多数页面中都非常有效,但在某些页面中会抛出错误,如下所示 String url = @"https://m.facebook.com"; try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); HttpWebResponse response = (HttpWebResponse)request.G
String url = @"https://m.facebook.com";
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
Stream receiveStream = response.GetResponseStream();
StreamReader readStream = null;
if (response.CharacterSet == null)
readStream = new StreamReader(receiveStream);
else
readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));
string data = readStream.ReadToEnd();
response.Close();
readStream.Close();
}
}
catch (Exception ex)
{
// utf-8 is not a supported encoding name error
}
如何解决这个问题?这里的其他帖子没有为我解决这个问题。这里的错误是
响应。CharacterSet
返回“utf-8”
。方法Encoding.GetEncoding
不知道这意味着什么,因为文本周围有引号。所以你必须把它们去掉
替换此行:
readStream = new StreamReader(receiveStream,
Encoding.GetEncoding(response.CharacterSet));
关于这一点:
readStream = new StreamReader(receiveStream,
Encoding.GetEncoding(response.CharacterSet.Replace("\"", string.Empty)));
感谢Andy,它工作正常,并提供了html源代码,但html内容与我从chrome browser>中获得的源代码略有不同。查看页面源代码。有什么想法吗?@nawala这是另一个问题。猜测您正在将由JS脚本更改的Inspector代码与普通下载源代码进行比较。请注意,页面加载后,JS可以对其进行显著更改。