Silverlight: кодирование потока веб-клиента - PullRequest
3 голосов
/ 20 мая 2011

Я пытался заставить это работать, но я очень расстроен в этот момент.Я новичок в этой области, поэтому, возможно, я просто делаю ошибки.

Что мне нужно сделать, так это взять веб-сайт .html и сохранить его в текстовом файле.Теперь проблема в том, что этот сайт на русском языке (кодировка 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-файл в txt-файле с помощью streamWriter, кодировка, тем не менее, снова как-то облажается.3) Класс кодирования не выполняет свою работу.

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

Может кто-нибудь предложить какую-либо помощь по этому вопросу?Это огромный ущерб моему проекту.Заранее спасибо,

1 Ответ

0 голосов
/ 20 мая 2011

Поскольку вы хотите обрабатывать кодировку, инородную для Silverlight, вы должны начать с загрузки, используя OpenReadAsync и OpenReadCompleted.

Теперь вы сможете взять Stream, предоставленный аргументами события Result и передайте его непосредственно полученному компоненту кодирования для получения правильного строкового результата.

...