2011-05-20 46 views
3

我一直試圖讓這個工作,但在這一點上我非常沮喪。我是這個領域的初學者,所以也許我只是犯了錯誤。Silverlight:對webClient流進行編碼

我需要做的是接受一個網站.html並將其存儲到一個txt文件中。現在的問題是,這個網站是俄文版(編碼windows-1251),Silverlight只支持3種編碼。所以爲了繞過這個限制,我得到了一個編碼類,它將流傳輸到一個字節數組,然後嘗試從文本中提取正確編碼的字符串。與此問題是,

1)我試圖確保webClient接收一個Unicode編碼流,因爲其他人似乎並沒有創建一個可檢索的字符串,但它似乎仍然不工作。

WebClient wc = new WebClient(); 
     wc.Encoding = System.Text.Encoding.Unicode; 
     wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_LoadCompleted); 
     wc.DownloadStringAsync(new Uri(site)); 

2)我擔心,當我的HTML存儲到使用StreamWriter的txt文件,編碼是,再一次,不知怎麼搞砸了。 3)編碼類沒有完成它的工作。

Encoding rus = Encoding.GetEncoding(1251); 
     Encoding eng = Encoding.Unicode; 
     byte[] bytes = rus.GetBytes(string); 
     textBlock1.Text = eng.GetString(bytes); 

任何人都可以提供這方面的任何幫助嗎?這對我的項目造成巨大的損害。在此先感謝,

回答

0

由於您想要處理Silverlight的外部編碼,因此應該先使用OpenReadAsyncOpenReadCompleted進行下載。

現在您應該能夠將事件參數Result提供的Stream屬性直接提供給您獲取的編碼組件,以生成正確的字符串結果。

+0

謝謝!我重寫了我改爲'OpenReadAsync',但我仍然無法獲得正確的文本。然後我注意到StreamReader也有一個編碼屬性,所以我將它設置爲Unicode,運行代碼並且工作正常! – Kirill 2011-05-20 22:21:28