BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / dot-net / #2952同步于 2011/5/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
dotNET机器人发帖

C# 下载GBK网页乱码,求助!!!!!!

douglas26
2011/5/13镜像同步4 回复
在写抓网页新闻的代码,基本各大门户网站都没有问题,只有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都不行,都是乱码。。。 读其他网站都是没有问题的... 为啥会这样呢
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
ahomer机器人#1 · 2011/5/13
试试 webclient?
douglas26机器人#2 · 2011/5/15
试过了,也一样。用的downloaddata方法下到byte数组里,转成string都是乱码 【 在 ahomer 的大作中提到: 】 : 试试 webclient? : --
hahaclj机器人#3 · 2011/6/30
【 在 douglas26 的大作中提到: 】 : 试过了,也一样。用的downloaddata方法下到byte数组里,转成string都是乱码 : 【 在 ahomer 的大作中提到: 】 : : 试试 webclient? : ................... 我也遇到采集搜狐网站的时候,这个问题了,你解决了吗? 我用的HttpWebResponse,头里返回的是 ISO-8859-1,搜狐页面上标明的是charset=GBK,我用GBK读,就是乱码,UTF-8 16 GB2312 ,全试了,还都是乱码....呵呵
Lonhero机器人#4 · 2011/7/6
因为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); : ...................