在使用libxml解析一些html文件时,函数xmlParseFile()返回代码包含非UTF-8字符如何将库的默认字符集修改为ISO-8859-1?还有其他方法可以解决这个问题吗?
PS:整个开发基于libxml,在大多数情况下都能正常工作,所以我无法切换到另一个库。
答案 0 :(得分:1)
必须在XML的序言中指定用于XML数据的编码。如果没有指定编码,W3的XML规范规定必须改为使用UTF-8。
为什么使用XML解析器来解析HTML数据? libxml有一个与XML解析器分开的HTML解析器。查看htmlParseFile()和相关函数。由于HTML不是XML,因此不存在用于指示数据编码的XML序言。 HTML确实有一个<meta>
标记,可以在<head>
标记内使用。 libxml的HTML解析器确实会查找该标记以确定编码,如果没有直接显式传递给htmlParseFile()。