0

我正在使用 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);

其中 'encoding' 是源 url 的字符集的字符串表示形式。

谢谢!

4

1 回答 1

1

你试过设置charset吗?

于 2012-05-16T16:43:14.363 回答