Я использую WebClient.DownloadFile
в C# для загрузки веб-страниц. Они загружаются в порядке, но кодировка часто неоднозначна (никакой спецификации нет). Универсальный детектор кодировки Mozilla (port 1, port 2) предоставляет систему для обнаружения кодирования файлов открытого текста с использованием эвристики, а this обеспечивает еще более простой метод, который распознает меньшее количество кодировок.Как декодировать веб-страницу в UTF8 независимо от ее кодировки
Так что, во-первых, веб-страницы HTML даже закодированы в странных кодировках, таких как Shift-JIS и EUC-KR? Если нет, то можно использовать более быстрый метод обнаружения, предполагающий, что что-то есть ASCII/ANSI или UTF8.
Во-вторых, даже после обнаружения кодировки, как сделать декодирование byte[]
файла в соответствующую строку UTF8? И после выполнения строковой обработки я могу сохранить файл обратно на диск с помощью спецификации UTF8? Или мне нужно добавить дополнительные теги, например <meta charset="utf-8"..">
, в HTML-файл?
У меня была такая же проблема. Заявленное кодирование иногда совершенно неверно (не говоря уже о том, что оно объявлено в тексте веб-страницы, которое необходимо сначала декодировать http://www.w3schools.com/tags/att_meta_charset.asp), спецификация почти всегда отсутствует. Я думаю, что эвристика - единственное разумное решение. –