星期三, 3月 28, 2007

[.Net]讀取網頁(4)

更快的方法,就是直接利用 .Net 2.0 提供的 WebBrowser 控制項。

不過,如果用這方法,有兩個缺點:
  1. .Net 1.1 不適用,因為 class library 沒提供。
  2. 當直接使用 DocumentText 屬性的時候,WebBrowser 沒有轉換編碼,而是直接以 ascii 傳回。
  3. 必須是 Windows form 應用程式


那麼,我們要怎麼自行轉換編碼呢?
首先利用 Reflector 來反組譯一下 DocumentText 屬性,這下就可以很清楚看到他是以 StreamReader 去讀取 DocumentStream。
所以當我們確信網頁的編碼是 UTF-8 時,就可以這麼寫了:

Stream documentStream = webBrowser1.DocumentStream;
if (documentStream == null)
return "";
StreamReader reader = new StreamReader(documentStream, Encoding.UTF8);
documentStream.Position = 0;
string documentText = reader.ReadToEnd();

沒有留言: