2012-04-25 53 views
2

我遇到了一些奇怪的事情,我希望你的意見。WebBrowser DocumentText編碼

有一個網頁,其中包含span元素與InnerTextInnerHtml屬性中的一些希臘文本。

該頁面的編碼是希臘文(Windows)

if的說法是:

if (mySpan != null && mySpan.InnerText.Contains(greekText)) 

這條線的工作100%,但我以前的非工作代碼爲:

if (mySpan != null && browser.DocumentText.Contains(greekText)) 

此行沒有工作,當我點擊了使用調試器預覽我注意到希臘文本是不可讀的(奇怪的符號而不是希臘字符)。但是,包含希臘文本的所有其他元素都被應用程序成功讀取,也就是說我可以將它們的屬性保存在變量中並使用它們。有沒有解釋爲什麼DocumentText失敗,InnerText成功了?

+0

你能告訴我你是如何獲得'mySpan'的價值嗎? – wal 2012-04-25 07:37:55

+0

'HtmlElement mySpan = browser.Document.GetElementById(mySpanId);' – iCantSeeSharp 2012-04-25 07:40:51

回答

2

綜觀源WebBrowser.DocumentText它會出現其採用默認的UTF8編碼:

public string DocumentText 
{ 
    get 
    { 
    Stream documentStream = this.DocumentStream; 
    if (documentStream == null) 
     return ""; 
    StreamReader streamReader = new StreamReader(documentStream); 
    documentStream.Position = 0L; 
    return streamReader.ReadToEnd(); 
    } 

即,使用一個StreamReader而不指定的編碼將假定UTF8編碼。

爲解決此問題

我只能假設使用browser.Document.GetElementById(mySpanId)方面這就是爲什麼你正確地看到它使用此電話時頁面的表示編碼越來越見this link

+0

檢查此刻,我會回來告訴你發生了什麼事。 – iCantSeeSharp 2012-04-25 07:54:34

+0

你的情況下'browser.Document.Encoding'的值是多少?這應該傳遞給StreamReader(在'WebBrowser'類中,但它不是) – wal 2012-04-25 08:00:08

+0

它是Windows-1253 – iCantSeeSharp 2012-04-25 08:06:59