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%
元素的属性。
您应该将其转义为<
。
string s="<!DOCTYPE html>
<li>Voltage: <0.05% + 10 mV
(<0.1% + 25 mV for output 2 of E3646/47/48/49A)</li>
</html>";
谢谢,这是说明问题没有连接到编码,这是一半的答案。但是:我不能改变文字,因为我从网站上得到它。那么你有另外一个想法吗? – 2012-03-15 14:10:54
@Chanipoz - 不是。如果你没有得到有效的HTML,你需要告诉HTML的提供者它是无效的,他们应该修复它。 – Oded 2012-03-15 14:14:44
这是唯一的方法?因为我不能要求提供者。 – 2012-03-15 14:17:25