Java HtmlCleaner: не обрабатывает расширенные символы ascii.

Я использую HTMLCleaner для очистки HTML-файла, который содержит такие символы, как '€' (десятичный ascii 128), 'TM' (десятичный ascii 153) и т. Д. То есть символы из расширенной таблицы ASCII .

HTMLCleaner не может обрабатывать эти символы и заменяет их символом '?' (десятичный ascii 63).

Есть ли какой-нибудь флаг, который я могу установить в HTMLCleaner для обработки этих символов?

Заранее спасибо.

РЕДАКТИРОВАТЬ: Переменная "кодировка" - "iso-8859-1", как и кодировка исходного файла.

    try {
        System.out.print("Parsing and cleaning:" + fileStr);
        URL url = new File(this.fileStr).toURI().toURL();
        // create an instance of HtmlCleaner
        HtmlCleaner cleaner = new HtmlCleaner();
        // default properties
        CleanerProperties props = cleaner.getProperties();
        // do parsing
        TagNode tagNode = new HtmlCleaner(props).clean(url);
        // serialize to XML file
        new PrettyXmlSerializer(props).writeToFile(tagNode, fileStr,
                encoding);
        System.out.println("Output: " + fileStr);
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

Я только что понял это. Линия:

TagNode tagNode = new HtmlCleaner(props).clean(url);

Шоубе заменить на:

TagNode tagNode = new HtmlCleaner(props).clean(url, encoding);

Где «кодировка» - это строковое представление кодировки исходного URL.

Спасибо!


person anahnarciso    schedule 16.05.2012    source источник
comment
Возможный дубликат: stackoverflow.com/questions/10299651/   -  person erikxiv    schedule 16.05.2012
comment
Да, это была аналогичная проблема, я проверил этот вопрос, но не понял, что это проблема кодирования. Спасибо, вы мне очень помогли.   -  person anahnarciso    schedule 16.05.2012


Ответы (1)


Вы пробовали установить charset?

person Has QUIT--Anony-Mousse    schedule 16.05.2012
comment
Да, как вы видите выше. Сгенерированный HTML-файл имеет ту же кодировку, что и исходный файл. - person anahnarciso; 16.05.2012
comment
Я бы установил только кодировку: new PrettyXmlSerializer(props).writeToFile(tagNode, fileStr, encoding);, но я пропустил TagNode tagNode = new HtmlCleaner(props).clean(url, encoding);. Теперь работает, спасибо. - person anahnarciso; 16.05.2012