win32上的libxml字符编码问题

时间:2009-08-13 18:16:30

标签: html xml utf-8 iso-8859-1 libxml2

在使用libxml解析一些html文件时,函数xmlParseFile()返回代码包含非UTF-8字符如何将库的默认字符集修改为ISO-8859-1?还有其他方法可以解决这个问题吗?

PS:整个开发基于libxml,在大多数情况下都能正常工作,所以我无法切换到另一个库。

1 个答案:

答案 0 :(得分:1)

必须在XML的序言中指定用于XML数据的编码。如果没有指定编码,W3的XML规范规定必须改为使用UTF-8。

为什么使用XML解析器来解析HTML数据? libxml有一个与XML解析器分开的HTML解析器。查看htmlParseFile()和相关函数。由于HTML不是XML,因此不存在用于指示数据编码的XML序言。 HTML确实有一个<meta>标记,可以在<head>标记内使用。 libxml的HTML解析器确实会查找该标记以确定编码,如果没有直接显式传递给htmlParseFile()。