博客动态
Hi!欢迎来到Jerry Coding!2021年 CSDN资源免积分下载网页版上线, 让你轻松GET想要的资源!关注我👇👇
微信扫码

扫一扫关注我

More
关于
New
RSS

C# httpwebrequest 抓取html乱码("gb2312")

2020年4月8日 Jerry 1220 2020年4月8日

       C# 使用httpwebrequest抓取一个网页,返回一直乱码?修改编码格式也没有解决,看看怎么搞!

问题:

       C# httpwebrequest 抓取网页返回乱码。

代码:

public void GetHtml()
{
	try
	{
		string url = "http://kaijiang.500.com";
		HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
		HttpWebResponse response = (HttpWebResponse)request.GetResponse();

		Stream stream;
		StreamReader sr;

		stream = response.GetResponseStream();
		sr = new StreamReader(stream, Encoding.UTF8);

		string strHtml = sr.ReadToEnd();

		stream.Close();
		sr.Close();
		Console.WriteLine(strHtml);
	}
	catch (WebException e)
	{
		e.StackTrace.ToString();
		return;
	}
}

返回乱码:

开始解决:

1、那肯定是编码不对啊,改一下就完了呗。

       看下网页的编码,是 gb2312

       而代码里面的编码是UTF8,于是把编码改成了gb2312:

sr = new StreamReader(stream, Encoding.GetEncoding("gb2312"));

       然而并没有解决啊!!!!!换成了另外一种乱码

       接下来就开始尝试各种编码。。。

       。。。。

       。。。。

        都没有解决,最后搜到了一种处理方法,直接上代码:

 public void GetHtml()
{
	try
	{
		string url = "http://kaijiang.500.com";
		HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
		HttpWebResponse response = (HttpWebResponse)request.GetResponse();

		Stream stream;
		StreamReader sr;

		if (response.ContentEncoding == "gzip")
		{
			stream = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress);
			sr = new StreamReader(stream, Encoding.GetEncoding("gb2312"));
		}
		else 
		{
			stream = response.GetResponseStream();
			sr = new StreamReader(stream, Encoding.UTF8);
		}
	
		string strHtml = sr.ReadToEnd();

		stream.Close();
		sr.Close();
		Console.WriteLine(strHtml);
	}
	catch (WebException e)
	{
		e.StackTrace.ToString();
		return;
	}
}


原创文章,转载请注明出处: https://jerrycoding.com/article/csharp-encoding

微信
jerry微信赞助
支付宝
jerry支付宝赞助

您尚未登录,暂时无法评论。请先 登录 或者 注册

0 人参与 | 0 条评论

每日一句 (From ONE)
一个人应该耐心等待,应该在整个的一生中积累各种感受和欢愉;而且如果活得够长的话,那么,在生命最后的岁月里,他也许能写出十行好诗。
微信扫码

扫一扫关注我

关于本站