Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HttpWebRequest StreamReader失败,utf-8不是受支持的编码名称错误_C#_Encoding_Utf 8_Streamreader - Fatal编程技术网

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可以对其进行显著更改。