Conversion from HTML to XHTML changes euro symbol, preventing correct XML parsing
我正在从 HTML 文件中提取信息,方法是使用 Java 中的 SAX 对其进行解析。解析程序给了我,它已经在使用 SAX,所以我想保持这种方式。
我要做的是:
-
我从网站获取 HTML 文件
-
使用 JTidy 库将其转换为有效的 XML。然而,这个库将所有 € 符号转换为"
您遇到的问题是编码问题。
管道中某处的某个工具正在破坏编码,然后该错误被继续执行,在您的输出中创建一个 â。
从外观上看,该网站使用 UTF-8(它也应该),但编码要么被错误声明,要么声明被忽略。
是否是您的工具链中的工具之一导致了此问题,或者是否是工具的滥用,尚不完全清楚。
- 好的,感谢有关编码的提示。例如,如何检查我的工具链中是否存在问题?在我的 HTML 文件中,我的正文中有以下 div 标签: <?xml version="1.0" encoding="UTF-8"?>blabla 这正常吗?当我将 HTML 验证为 XML 时,验证器会产生关于该字符串位于文档中间的错误。
-
@Myna:好吧,看起来我们找到了罪魁祸首:HTML 源代码是垃圾。
-
哈哈是的。那么我该如何处理呢?这个想法是通过遵循起始 HTML 页面中的 href 来自动爬取许多页面。如果每次出现无效 XHTML 时都会引发异常,我该如何运行我的代码?我要不要用其他方式做事?我只想提取我的数据aa
-
@Myna:当 XML 解析器处理这么大的错误时,规范不允许它继续。至于 HTML 解析器,它们的具体作用因解析器而异。在任何情况下,该文件都应该被认为是不可修复的损坏,并且应该被丢弃。
-
XML 解析器不适合这项工作,除非您清理可能非常棘手的输入文档。使用上面建议的 HTML 解析器。您可能希望从 HTML 转到 XHTML,但如前所述,这很难做到。
使用 HTML 数字代替实际的欧元符号