C#获取网页源代码出现乱码怎么办,怎么自动识别?
4个回答
展开全部
出现乱码是的根本原因就是解析时使用的字符编码与网页的字符编码不同。
可通过IE先查看在什么编码下网页可正常显示,如果为简体中文(GBK2312),在解析返回的网页源代码时,就要使用System.Text.Encoding.GetEncoding("gbk2312");或
System.Text.Encoding.GetEncoding(936);进行解码。
可通过IE先查看在什么编码下网页可正常显示,如果为简体中文(GBK2312),在解析返回的网页源代码时,就要使用System.Text.Encoding.GetEncoding("gbk2312");或
System.Text.Encoding.GetEncoding(936);进行解码。
追问
我是想采集各种网页的源代码,有什么办法可以自动识别各种网页的编码吗?
追答
自动识别网页编码,这个没有做过,不过对于中文网站不是gbk2312就是unicode(utf-8)。你采集各种网页源代码,应该是一个网站的吧?如果是一个网站就先看看网站的编码,如果不是一个网站就不太好办了。对于文件的编码是可以采用bom判断的,不过这个不在这次问题之内就不说了。
展开全部
一般情况下,原因就是你使用了不同的解码方式造成的。
不过好的方面是,这个解码方式一般是有说明的,可以直接从网页中截取。一般的网站作者防止浏览器从不同的编码方式上换到自己页面上来而出来乱码,比如你的网页是utf-8的页面,如果一个浏览者从gb2312的页面上通过连接地址转过来,你的页面就是出现乱码。为了让浏览器自动识别,作者往往加入一个元数据说明,该说明为:<meta http-equiv="content-type" Content="text/html;charset=utf-8|gbk|gb2312|big5|..." />,幸运的是,你可以用任何一种解码,解出的英文都不会乱码,然后找到该字符串,看其中charset后边的编码方式就可以确定用哪一种解码了!
但是对于某些不知道的作者,或者有特殊作用的做者,你根本在源码中找不到该编码方式,这时一般情况下的,我们请求时上传一种方式,一般网站根本上传的方式自动解析后相对应的编码方式。
当然,这只是对于httpwebrequest取页面源码时的操作,如果你要用webclient已经封装好的对的话,也是可以用同的样的方式进行一次判断,如果是用webbroswer的话更简单的,因为webbrowser可以像浏览器那样判断好的,你可以获知他的编码方式,同时利用mshtml空间的内容可以直接取到webbroswer的内容的。
不过好的方面是,这个解码方式一般是有说明的,可以直接从网页中截取。一般的网站作者防止浏览器从不同的编码方式上换到自己页面上来而出来乱码,比如你的网页是utf-8的页面,如果一个浏览者从gb2312的页面上通过连接地址转过来,你的页面就是出现乱码。为了让浏览器自动识别,作者往往加入一个元数据说明,该说明为:<meta http-equiv="content-type" Content="text/html;charset=utf-8|gbk|gb2312|big5|..." />,幸运的是,你可以用任何一种解码,解出的英文都不会乱码,然后找到该字符串,看其中charset后边的编码方式就可以确定用哪一种解码了!
但是对于某些不知道的作者,或者有特殊作用的做者,你根本在源码中找不到该编码方式,这时一般情况下的,我们请求时上传一种方式,一般网站根本上传的方式自动解析后相对应的编码方式。
当然,这只是对于httpwebrequest取页面源码时的操作,如果你要用webclient已经封装好的对的话,也是可以用同的样的方式进行一次判断,如果是用webbroswer的话更简单的,因为webbrowser可以像浏览器那样判断好的,你可以获知他的编码方式,同时利用mshtml空间的内容可以直接取到webbroswer的内容的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-12-16
展开全部
编码不正确
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-12-16
展开全部
有个网页小偷工具可以把你需要的东西都下载下来,dreamweaver和Vs都可以对源码进行解释啊!不过不清楚你要的是什么……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询