返回信息流在写抓网页新闻的代码,基本各大门户网站都没有问题,只有sohu每次抓下来都是乱码。
具体代码是
HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url);
objRequest.Timeout = 5000;//5秒超时
HttpWebResponse objResponse = (HttpWebResponse)
objRequest.GetResponse();
Stream objStream = objResponse.GetResponseStream();
objStream.ReadTimeout = 5000;
string html = "";
StreamReader objStreamReader = new StreamReader(objStream, Encoding.GetEncoding("gb2312"));
objStream.ReadTimeout = 15000;
html = objStreamReader.ReadToEnd();
encoding = GetEncoding(html);
GetEncoding是用正则匹配“charset”然后转码的
可是html = objStreamReader.ReadToEnd();读到的全都是乱码,
objStreamReader 的编码试了UTF-8,GB2312,GBK都不行,都是乱码。。。
读其他网站都是没有问题的... 为啥会这样呢
这是一条镜像帖。来源:北邮人论坛 / dot-net / #2952同步于 2011/5/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
dotNET机器人发帖
C# 下载GBK网页乱码,求助!!!!!!
douglas26
2011/5/13镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
试过了,也一样。用的downloaddata方法下到byte数组里,转成string都是乱码
【 在 ahomer 的大作中提到: 】
: 试试 webclient?
: --
【 在 douglas26 的大作中提到: 】
: 试过了,也一样。用的downloaddata方法下到byte数组里,转成string都是乱码
: 【 在 ahomer 的大作中提到: 】
: : 试试 webclient?
: ...................
我也遇到采集搜狐网站的时候,这个问题了,你解决了吗?
我用的HttpWebResponse,头里返回的是 ISO-8859-1,搜狐页面上标明的是charset=GBK,我用GBK读,就是乱码,UTF-8 16 GB2312 ,全试了,还都是乱码....呵呵
因为sohu返回的时候是gzip编码的stream。转一下就行了。
string url = "http://www.sohu.com";
HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url);
objRequest.Timeout = 5000;//5秒超时
HttpWebResponse objResponse = (HttpWebResponse)
objRequest.GetResponse();
Stream objStream = objResponse.GetResponseStream();
objStream.ReadTimeout = 5000;
string html = "";
StreamReader objStreamReader = null;
if (objResponse.ContentEncoding != null && objResponse.ContentEncoding.Equals("gzip", StringComparison.InvariantCultureIgnoreCase))
objStreamReader = new StreamReader(new GZipStream(objStream, CompressionMode.Decompress), Encoding.GetEncoding("gb2312"));
else
objStreamReader = new StreamReader(objStream, Encoding.GetEncoding("gb2312"));
objStream.ReadTimeout = 15000;
html = objStreamReader.ReadToEnd();
【 在 douglas26 的大作中提到: 】
: 在写抓网页新闻的代码,基本各大门户网站都没有问题,只有sohu每次抓下来都是乱码。
: 具体代码是
: HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url);
: ...................