В получении какого-то случайного индекса испанской газеты я не получаю диакритические знаки правильно с помощью WebRequest, они дают этот странный характер: �
, при загрузке ответа от того же uri, используя WebClient
, я получаю соответствующий ответ.Кодировка различий между использованием WebClient и WebRequest?
Почему эта дифференциация?
var client = new WebClient();
string html = client.DownloadString(endpoint);
против
WebRequest request = WebRequest.Create(endpoint);
using (WebResponse response = request.GetResponse())
{
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
string html = reader.ReadToEnd();
}
Я предполагаю, но это, вероятно, потому, что 'WebClient.DownloadString' смотрит на заголовок' content-type' (например, «text/html; charset = utf-16») для вывода кодировки, но ваш метод WebRequest использует UTF8 (по умолчанию StreamReader) – spender
заголовок 'content-type' не определяет кодировку в этом случае. – bevacqua
@Nico. Затем он должен выполнить тесты для UTF-8, UTF-16LE, UTF-16BE и UTF-32 в соответствии с предварительными штрихами (для обнаружения спецификаций и других контрольных сигналов) и, наконец, по умолчанию используется устаревший набор символов по умолчанию, который происходит с сопоставить с сайтом на вашем компьютере. Поскольку HTTP предполагает Latin-1 (в конце концов, это было в начале 90-х), было бы хорошо использовать явно использование этого как ваш выбор «Я не знаю». –