2011-11-04 30 views
2

当我使用HtmlAgilityPack读取解析HTML文件,并提取一些文字被替换为问号:人物解析HTML

static void Main(string[] args) 
     { 
      var webGet = new HtmlWeb(); 
      var document = webGet.Load("http://port.ro/"); 

      var programs = from program in document.DocumentNode.Descendants() 
          where program.Name == "a" && program.Attributes["href"] != null && program.InnerText.Trim().Length > 0 
          select program.InnerText ; 

      foreach (string s in programs) 
      { 
       Console.WriteLine(s); 
      } 

      Console.ReadLine(); 
     } 

我的问题是,该网站包含的人物,如à当我打印出来,它们被替换为?

当我打印文字à将其替换为a或打印出如à时,我应该如何操作?

+0

[c#unicode string output](http:// stackoverflow .com/questions/5055659/c-sharp-unicode-string-output) – CodeCaster

回答

1

您是否尝试使用或设置网站所需的编码。这会帮助你得到正确的文本

VAR文件= webGet.Load( “http://port.ro/”,Encoding.UTF8); //检查编码

上面一个是HTMLDocument的

为HtmlWeb Try this

var web = new HtmlWeb 
{ 
    AutoDetectEncoding = false, 
    OverrideEncoding = myEncoding, 
}; 
var doc = web.Load(myUrl); 
+0

我可以使用第二个参数吗?我得到“无效参数” – Kobe

+0

现在它不知道OverrideEncoding,没有它我得到了相同的结果 – Kobe

+0

似乎是一个旧版本,检查链接中的意见,也许你应该使用最新版本 – V4Vendetta

1

HtmlAgility有属性来设置流编码(通常它应该自动检测编码),但可能不适用于您的网页..(错误元标记等..)