У меня проблема с некоторым контентом, который мы загружаем из Интернета, для инструмента для очистки экрана, который я создаю.WebClient.DownloadString() возвращает строку со своеобразными символами
в приведенном ниже коде, строка, возвращаемая методом загрузки строки веб-клиента, возвращает некоторые нечетные символы для загрузки исходного кода для нескольких (не всех) веб-сайтов.
Я недавно добавил http заголовки, как показано ниже. Ранее этот же код вызывался без заголовков с тем же эффектом. Я не пробовал варианты в заголовке «Accept-Charset», я не очень разбираюсь в текстовой кодировке, отличной от основ.
Характеры, или последовательности символов, которые я имею в виду, являются:
"ï» ¿ "
и
" Â "
Эти символы не видны когда вы используете «источник просмотра» в веб-браузере. Что может быть причиной этого и как я могу исправить проблему?
string urlData = String.Empty;
WebClient wc = new WebClient();
// Add headers to impersonate a web browser. Some web sites
// will not respond correctly without these headers
wc.Headers.Add("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12");
wc.Headers.Add("Accept", "*/*");
wc.Headers.Add("Accept-Language", "en-gb,en;q=0.5");
wc.Headers.Add("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
urlData = wc.DownloadString(uri);
Я получаю ту же ошибку с приложением Windows, которое я написал, чтобы минимизировать мои JS и CSS с помощью C# YUI Compessor. Он выдает ошибки в файлах, которые возвращаются с точными символами, указанными выше. Я указываю 'client.Encoding = Encoding.UTF8;' и он все равно возвращает фанковые символы ... Также я пытаюсь выяснить, как обрабатывать ошибки, создаваемые C# YUI Compressor, такие как [ERROR] Invalid Syntax ... – pixelbobby
Прошло некоторое время с тех пор, как я впервые столкнулся с этой проблемой и с тех пор узнал о кодировке текста. Чтобы помочь вам, в основном то, что вам нужно сделать, это попробовать и сопоставить кодировку из заголовков http с ответом. Оттуда декодируют поток байтов, используя обнаруженную кодировку. Если кодировка не включена в заголовки, декодируется с UTF8, а затем искать кодировку в документе HTML. Если в документе HTML все еще нет, вы остаетесь только с эвристикой. Я читал о различных механизмах, но здесь нет простого решения. – gb2d
Я отправлю код обратно в следующий раз, когда я получу шанс. – gb2d