在尝试从google.com获取html时,我遇到了编码问题。请给我一个如何解决这个问题的建议。非常感谢。
public string Html
{
get
{
try
{
var request = WebRequest.Create(Url) as HttpWebRequest;
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1,gzip(gfe)";
if (request != null)
{
var response = request.GetResponse() as HttpWebResponse;
if (response != null)
{
string Charset = response.CharacterSet;
Encoding encoding = Encoding.GetEncoding(Charset);
var sr = new StreamReader(response.GetResponseStream(), encoding);
return sr.ReadToEnd();
}
}
return string.Format("Could not create object HttpWebRequest for '{0}'", Url);
}
catch (Exception e)
{
return e.Message;
}
}
}这也是一张图片:

发布于 2012-08-26 18:17:42
您面临的问题是,由于某些原因,Google不会在标题中发送任何编码信息。如果您使用下面的链接检查标题(特别是Content-Type标题),并将第一个标题(来自您的图像)与第二个标题进行比较,您将看到第一个标题缺少一些重要信息。
http://web-sniffer.net/?url=http://www.google.com.ua/intl/ils/ads/
http://web-sniffer.net/?url=http://www.google.de/
这里需要做的是,首先解析返回的超文本标记语言,查找指定编码的<meta>-element,然后用新信息重新解码得到的流。根据您后来对HTML做了什么,您可能希望将http://htmlagilitypack.codeplex.com/作为一个用于处理HTML的优秀库来查看,或者只编写一个正则表达式来提取编码(尽管我真的推荐使用第一种方法)。
https://stackoverflow.com/questions/12128998
复制相似问题