Это начало - у меня есть файл на диске, который является HTML-страницей.Когда я открываю его в обычном веб-браузере, он отображается так, как должен - т.е. независимо от того, какая кодировка используется, я вижу правильные национальные символы.
Затем я прихожу - моя задача - загрузить тот же файл, разобратьэто, и распечатать некоторые части на экране (консоли) - скажем, все тексты.Конечно, я хотел бы видеть только правильные символы, а не мамбо-юмбо.Последний шаг - изменение текста и сохранение файла.
Таким образом, синтаксический анализатор также должен анализировать и обрабатывать кодирование в обоих направлениях.До сих пор я не знал о парсере, который даже способен правильно загружать данные.
Вопрос
Какой парсер вы бы порекомендовали?
Подробности
HTML-страницав общем случае кодировка указана в заголовке (в метатеге), поэтому парсер должен ее использовать.Сценарий, который я должен посмотреть заранее и проверить кодировку, а затем вручную установить кодировку в коде, не допускается.Например, это взято из руководств JSoup:
File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");
Я не могу сделать такую вещь, парсер должен сам обрабатывать обнаружение кодировки.
В C # я сталкивалсяаналогичная проблема с загрузкой html.Я использовал HTMLAgilityPack и сначала выполнил обнаружение кодирования, затем, используя его, я зашифровал поток данных, и после этого я проанализировал данные.Итак, я выполнил оба шага в явном виде, но поскольку библиотека предоставляет оба метода, это нормально для меня.
Такое явное разделение может быть даже лучше, поскольку его можно было бы использовать в случае, еслиметода обнаружения недостающего заголовка.