HtmlAgilityPack UTF-8编码

问题描述:

我使用HtmlAgilityPack来解析我的HTML文档,但我无法得到正确的HTML。HtmlAgilityPack UTF-8编码

例如:

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>" 

问题是什么?

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

您在li的文本有<,造成mV等等被解释为(它被解释为一个元素,因为有它前面一个<)的0.05%元素的属性。

您应该将其转义为&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>"; 
+0

谢谢,这是说明问题没有连接到编码,这是一半的答案。但是:我不能改变文字,因为我从网站上得到它。那么你有另外一个想法吗? – 2012-03-15 14:10:54

+0

@Chanipoz - 不是。如果你没有得到有效的HTML,你需要告诉HTML的提供者它是无效的,他们应该修复它。 – Oded 2012-03-15 14:14:44

+0

这是唯一的方法?因为我不能要求提供者。 – 2012-03-15 14:17:25