我需要一個獲取到頁面鏈接的方法,並返回此頁面的標題。如何使用C#以正確的編碼下載HTML頁面?
我使用Web客戶端 -
var webClient = new WebClient();
var htmlString = webClient.DownloadString(_link);
它運作良好,但它失敗外語的編碼。我得到問號和奇怪的字符,而不是我需要的文字。
是否有一種通用的方法來識別頁面的編碼並使用它?如果不是全部,我需要它來支持大部分編碼。
我需要一個獲取到頁面鏈接的方法,並返回此頁面的標題。如何使用C#以正確的編碼下載HTML頁面?
我使用Web客戶端 -
var webClient = new WebClient();
var htmlString = webClient.DownloadString(_link);
它運作良好,但它失敗外語的編碼。我得到問號和奇怪的字符,而不是我需要的文字。
是否有一種通用的方法來識別頁面的編碼並使用它?如果不是全部,我需要它來支持大部分編碼。
使用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;
}
似乎工作,謝謝! – yellowblood 2011-02-24 11:19:16
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();
}
這顯然只適用於,如果頁面確實是UTF-8!此外,它不解碼HTML字符,如ü – 2011-02-24 10:00:23
請問網頁和/或服務器指定爲哪種編碼它被編碼? – 2011-02-24 09:57:20
該網頁可以是互聯網上的任何網頁,這就是問題:) – yellowblood 2011-02-24 10:28:22