2011-05-20 50 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