2011-02-24 72 views
2

我需要一個獲取到頁面鏈接的方法,並返回此頁面的標題。如何使用C#以正確的編碼下載HTML頁面?

我使用Web客戶端 -

 var webClient = new WebClient(); 
     var htmlString = webClient.DownloadString(_link); 

它運作良好,但它失敗外語的編碼。我得到問號和奇怪的字符,而不是我需要的文字。

是否有一種通用的方法來識別頁面的編碼並使用它?如果不是全部,我需要它來支持大部分編碼。

+0

請問網頁和/或服務器指定爲哪種編碼它被編碼? – 2011-02-24 09:57:20

+0

該網頁可以是互聯網上的任何網頁,這就是問題:) – yellowblood 2011-02-24 10:28:22

回答

10

使用HtmlAgilityPack你可以做這樣的事情

using (WebClient client = new WebClient()) 
using (var read = client.OpenRead("http://your.com")) 
{ 
    HtmlDocument doc = new HtmlDocument(); 
    doc.Load(read, true); // true = get encoding from byte order masks 
    // process doc, extract title 
    var title = doc.DocumentNode.SelectSingleNode("//title").InnerText; 
} 
+0

似乎工作,謝謝! – yellowblood 2011-02-24 11:19:16

0
using System; 
using System.IO; 
using System.Net; 
using System.Text; 

... 

    public static void GetFile 
      (
      string strURL, 
      string strFilePath 
      ) 
     { 

      WebRequest myWebRequest = WebRequest.Create(strURL); 

      WebResponse myWebResponse = myWebRequest.GetResponse(); 

      Stream ReceiveStream = myWebResponse.GetResponseStream(); 

      Encoding encode = System.Text.Encoding.GetEncoding("utf-8"); 

      StreamReader readStream = new StreamReader(ReceiveStream, encode); 

      string strResponse=readStream.ReadToEnd(); 

      StreamWriter oSw=new StreamWriter(strFilePath); 

      oSw.WriteLine(strResponse); 

      oSw.Close(); 

      readStream.Close(); 

      myWebResponse.Close(); 

     } 
+1

這顯然只適用於,如果頁面確實是UTF-8!此外,它不解碼HTML字符,如ü – 2011-02-24 10:00:23

相關問題