更快的方法,就是直接利用 .Net 2.0 提供的 WebBrowser 控制項。
不過,如果用這方法,有兩個缺點:
- .Net 1.1 不適用,因為 class library 沒提供。
- 當直接使用 DocumentText 屬性的時候,WebBrowser 沒有轉換編碼,而是直接以 ascii 傳回。
- 必須是 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();