[英]HttpWebResponse encoding
尝试从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;
}
}
}
这也是一张图片:
您面临的问题是因为某种原因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/
在这里您需要做的是首先解析返回的HTML,并寻找一个<meta>
元素,该元素指定编码,然后使用该新信息重新编码获取的流。 取决于您之后对HTML的处理方式,您可能希望将http://htmlagilitypack.codeplex.com/作为使用HTML的出色库,或者只是编写一个正则表达式以提取编码(尽管我真的建议您而是第一种选择)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.