博客动态
Hi!欢迎来到Jerry Coding!公众号垃圾分类增加学习功能,关注下面的公众号一起来帮助Jerry学习更多垃圾分类知识吧!
微信扫码

扫一扫关注我

More
关于
New
RSS

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

2020年4月8日 Jerry 107 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

微信
支付宝

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

0 人参与 | 0 条评论