【问题标题】:how to change HtmlWeb encoding如何更改 HtmlWeb 编码
【发布时间】:2012-04-15 05:32:31
【问题描述】:

我正在尝试使用 htmlagilitypack 为 Windows 手机应用程序加载网页,问题是编码是 iso-8859-7 并且 htmlWeb 类将页面加载为 utf。 我尝试使用以下代码解决此问题:

 public auditPage()
        {
            InitializeComponent();
            HtmlWeb hwWeb = new HtmlWeb();
            hwWeb = new HtmlWeb
            {
                AutoDetectEncoding = false,
                OverrideEncoding = Encoding.GetEncoding("iso-8859-7"),
            };
           HtmlWeb.LoadAsync("url", HtmlWeb_load);
        }

但我收到以下错误: “HtmlAgilityPack.HtmlWeb”不包含“OverrideEncoding”的定义 “HtmlAgilityPack.HtmlWeb”不包含“AutoDetectEncoding”的定义。我该怎么做才能正确编码 html 页面?

【问题讨论】:

    标签: c# windows-phone-7 html-agility-pack


    【解决方案1】:

    自动检测编码已添加到最新版本之一中,并且可能在您添加到项目中的版本中不可用。 Version 1.4.0 has this property.

    另请参阅: http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/b2733aa5-99dc-4bcc-a3b8-ea0754f494e0/

    【讨论】:

      【解决方案2】:

      我认为这里最简单的方法是不使用HtmlWeb。正确的流编码检测似乎有些麻烦。

      但您可以手动完成,例如通过使用WebClient.OpenReadAsync,然后使用HtmlDocument.Load 方法,该方法接受流编码作为第二个参数,如下所示:

      var client = new WebClient();
      client.OpenReadCompleted += (sender, e) =>
      {
          doc.Load(e.Result, Encoding.GetEncoding("iso-8859-7"));
          e.Result.Close();
      };
      client.OpenReadAsync(url);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-13
        • 1970-01-01
        • 2012-04-22
        • 2014-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多