2011-11-04 32 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有屬性來設置流編碼(通常它應該自動檢測編碼),但可能不適用於您的網頁..(錯誤元標記等..)