Скачать HTML с кодировкой UTF-8 против ISO-8859-1

Могу ли я загрузить веб-страницу с charset=iso-8859-1и скачать его с encoding=utf-8? Будет ли загружаться правильно?

Могу ли я всегда скачивать с кодировкой utf-8 для всех кодировок в Интернете?

Мой код:

HTML-страница в Интернете:

<html debug="true">
<head/>
<body>
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="1252"%>
<title>Untitled Document</title>
<meta name="robots" content="noindex"/>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
............

Func:

void download() {
        WebClient client = new WebClient();
        client.Encoding = Encoding.UTF8;
        client.DownloadDataCompleted += new DownloadDataCompletedEventHandler(client_DownloadDataCompleted);
        worker.ReportProgress(i);
        client.DownloadDataAsync(new Uri(link), i);
}
void client_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e) {
   Encoding enc = Encoding.UTF8;
   string myString = enc.GetString(e.Result);
}

1 ответ

Решение

Нет, это не работает ДокументацияWebClient.Encoding ясно говорит:

Когда строка загружается с использованием методов DownloadString или DownloadStringAsync, WebClient использует возвращаемую этим кодировку для преобразования загруженного массива байтов в строку.

И почему это должно работать? Ваша веб-страница имеет кодировку, отличную от UTF-8. Почему вы хотите использовать UTF-8 здесь? Это не имеет никакого смысла. Документ кодируется как ISO 8859-1, следовательно, это кодировка, которую вам нужно использовать, чтобы прочитать его.

Другие вопросы по тегам