繁体   English   中英

HttpWebResponse编码

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM