【问题标题】:Problem with libxml character enconding on win32win32上libxml字符编码的问题
【发布时间】:2009-08-13 18:16:30
【问题描述】:

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

PS:整个开发都是基于libxml,大部分情况下都能正常工作,所以无法切换到其他库。

【问题讨论】:

  • 我不确定我是否理解。您收到的是非 UTF-8 字符,所以您想切换到更严格的字符集 (8859)?这有什么帮助?

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


【解决方案1】:

用于 XML 数据的编码必须在 XML 的序言中指定。如果未指定编码,W3 的 XML 规范规定必须采用 UTF-8。

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

【讨论】:

    猜你喜欢
    • 2015-11-27
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多