【问题标题】:HtmlAgilityPack UTF-8 encodingHtmlAgilityPack UTF-8 编码
【发布时间】:2012-03-15 13:50:26
【问题描述】:

我正在使用 HtmlAgilityPack 解析我的 html 文档,但无法正确获取 html。

例如:

string s="<!DOCTYPE html>
              <li>Voltage: <0.05% + 10 mV 
              (<0.1% + 25 mV for output 2 of E3646/47/48/49A)</li>
          </html>";

HtmlAgilityPack.HtmlDocument doc;
doc.LoadHtml(s); 

但我明白了:

"<li>Voltage: <0.05% +="" 10="" mv=""></0.05%><0.1% +="" 25="" mv="" for="" output="" 2="" of=""></0.1%></li>"

代替:

"<li>Voltage: <0.05% + 10 mV (<0.1% + 25 mV for output 2 of E3646/47/48/49A)</li>"

有什么问题?

附言我有另一个 utf-8 编码的 html 文档,它没有问题。

【问题讨论】:

    标签: c# utf-8 html-agility-pack


    【解决方案1】:

    你在li的文本中有&amp;lt;,导致mV等...被解释为0.05%元素的属性(它被解释为一个元素,因为有一个@987654326 @ 前面)。

    您应该将这些转义到&amp;lt;

    string s="<!DOCTYPE html>
                  <li>Voltage: &lt;0.05% + 10 mV 
                  (&lt;0.1% + 25 mV for output 2 of E3646/47/48/49A)</li>
              </html>";
    

    【讨论】:

    • 谢谢,说明问题与编码无关,这是一个一半的答案。但是:我无法更改文本,因为我是从网站上获取的。那么你有别的想法吗?
    • @Chanipoz - 不是真的。如果你没有得到有效的 HTML,你需要告诉 HTML 的提供者它是无效的并且他们应该修复它。
    • 这是唯一的方法?因为我不能问供应商。
    • @Chanipoz - 它不是有效的 HTML。如果提供者声称是,那么他们就错了。除了手动更改值之外,我看不到自动化的方法。
    猜你喜欢
    • 2011-10-30
    • 2012-11-07
    • 1970-01-01
    • 2015-03-04
    • 2016-07-05
    • 1970-01-01
    • 2015-11-15
    • 2011-04-27
    • 2012-09-22
    相关资源
    最近更新 更多