首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpWebResponse编码

HttpWebResponse编码
EN

Stack Overflow用户
提问于 2012-08-26 17:26:49
回答 1查看 1.5K关注 0票数 1

在尝试从google.com获取html时,我遇到了编码问题。请给我一个如何解决这个问题的建议。非常感谢。

代码语言:javascript
复制
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;
            }
        }
    }

这也是一张图片:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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的优秀库来查看,或者只编写一个正则表达式来提取编码(尽管我真的推荐使用第一种方法)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12128998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档