win32 上的 libxml 字符编码问题

发布于 2024-08-02 05:58:29 字数 162 浏览 6 评论 0原文

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

PS:整个开发基于libxml,并且在大多数情况下都可以工作,因此我无法切换到另一个库。

While parsing some html files with libxml the function xmlParseFile() returns that the code includes non UTF-8 characters How can i modify the default charset of the library to ISO-8859-1 ? Is there any other way to solve this ?

PS: The entire development is based on libxml and works in most cases so I can't switch to another library.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

豆芽 2024-08-09 05:58:29

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

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

The encoding used for XML data must be specified in the XML's prolog. If no encoding is specified, W3's XML spec dictates that UTF-8 must be assumed instead.

Why are you using an XML parser for parsing HTML data? libxml has an HTML parser separate from its XML parser. Look at htmlParseFile() and related functions. Since HTML is not XML, there would be no XML prolog present to indicate the data encoding. HTML does have a <meta> tag available that can be used inside the <head> tag for that, though. libxml's HTML parser does look for that tag to determine the encoding, if not explicitally passed to htmlParseFile() directly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文