【问题标题】:Silverlight: Encoding a webClient streamSilverlight:编码 webClient 流
【发布时间】:2011-08-29 08:35:54
【问题描述】:

我一直在努力让它发挥作用,但在这一点上我感到非常沮丧。我是这个领域的初学者,所以也许我只是在犯错误。

我需要做的是获取一个网站 .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) 我担心,当我使用 streamWriter 将 html 存储到 txt 文件中时,编码再次以某种方式搞砸了。 3) 编码类没有发挥作用。

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

任何人都可以就此事提供任何帮助吗?这对我的项目造成了巨大的损害。提前致谢,

【问题讨论】:

    标签: windows silverlight windows-phone-7 encoding webclient


    【解决方案1】:

    由于您想处理 Silverlight 的外来编码,您应该从使用 OpenReadAsyncOpenReadCompleted 下载开始。

    现在您应该可以将事件参数Result 属性提供的Stream 直接提供给您获取的编码组件以生成正确的字符串结果。

    【讨论】:

    • 谢谢!我已经改写为“OpenReadAsync”,但我仍然无法获得正确的文本。然后我注意到 StreamReader 也有一个 encoding 属性,所以我将它设置为 Unicode,运行代码并且它可以工作!
    猜你喜欢
    • 2012-06-16
    • 1970-01-01
    • 2022-01-01
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 2020-06-30
    相关资源
    最近更新 更多