Troube with Windows1251Encoding

Feb 9, 2013 at 7:05 PM
Edited Feb 9, 2013 at 7:09 PM
Добрый вечер. Спасибо за проделанную вами работу над тулкитом - очень полезная штука!

Но возникла проблема: не удается сконвертировать строку из win1251 в utf8. Пытаюсь так:
Windows1251Encoding encoding = new Windows1251Encoding();
byte[] bytes = encoding.GetBytes(str1251);
string decoded = System.Text.Encoding.UTF8.GetString(bytes, 0, bytes.Length);
но вместо текста получаю вопросительные знаки. str1251 - строка в windows-1251

Еще пробовал так:
Windows1251Encoding encoding = new Windows1251Encoding();
byte[] bytes = encoding.GetBytes(str1251);
byte[] res = System.Text.Encoding.Convert(encoding, System.Text.Encoding.UTF8, bytes);
string decoded = encoding.GetString(res, 0, res.Length);
Ничего не помогает. Подскажите, что делаю не так?
Coordinator
Feb 11, 2013 at 10:00 AM
А откуда возникла строка str1251? Если вы получаете ее с сервиса, то .Net автоматически пытается ее конвертнуть как utf8.

Вероятно нужно задать Encoding в момент загрузки строки, в случае WebClient это делается так:
WebClient wc = new WebClient();
wc.Encoding = new Windows1251Encoding();
wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(c_DownloadStringCompleted);
wc.DownloadStringAsync(url);
Feb 11, 2013 at 5:16 PM
А слона то и не заметил... Да, получал от сервиса и ваш вариант заработал. Спасибо!