【发布时间】:2012-05-24 06:33:54
【问题描述】:
我正在使用 HTMLCleaner 清理一个 HTML 文件,其中包含“€”(ascii 十进制 128)、“TM”(ascii 十进制 153)等字符。也就是说,ASCII 扩展表中的字符。
HTMLCleaner 无法处理这些字符并将它们替换为字符 '?' (ASCII 十进制 63)。
我可以在 HTMLCleaner 中设置任何标志来处理这些字符吗?
提前致谢。
编辑: 变量“encoding”是“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 的字符集的字符串表示形式。
谢谢!
【问题讨论】:
-
是的,这是一个类似的问题,我检查了那个问题,但我没有意识到这是一个编码问题。谢谢你,你真的帮了我。
标签: java ascii extended-ascii htmlcleaner