【问题标题】:libxml2 questions about xmlChar*关于 xmlChar* 的 libxml2 问题
【发布时间】:2010-09-24 12:12:58
【问题描述】:

我正在使用 libxml2。所有函数都使用 xmlChar*。我发现 xmlChar 是一个无符号字符。

所以我对如何使用它有一些疑问。

1) 例如,如果我使用 utf-16 或 utf-32 文件,libxml2 如何处理它并在函数中返回 xmlChar?那我会失去一些角色吗??

2) 如果我想对这个字符串做点什么,我应该将它转换为 char* 还是 wchar_t* 以及如何转换??

我会丢失一些字符吗?

【问题讨论】:

    标签: char unsigned


    【解决方案1】:

    xmlChar 用于处理UTF-8 编码

    所以,回答你的问题:

    1. 不,如果使用 UTF-16UTF-32,您不会丢失任何字符。只需使用 iconv 或任何其他库对您的 UTF-16UTF-32 数据进行编码,然后再将其传递给 API。

    2. 不要只是“强制转换”字符串。如果需要,将它们转换为其他编码。

    【讨论】:

    • 谢谢,但现在我还有一些问题:它现在是如何工作的?因为即使我提供了一个 utf-16 文件。 Libxml 仍然释放 unsigned char*。为什么以及如何工作?第二个是如何将 UTF32 或 UTF16 转换为 UTF-8。我不想使用一些第三方库。我需要在unix下做。我知道windows有功能WideCharToMutliByte unix有类似的东西吗?最后一个问题是如何将 xmlchar 转换为其他编码以及转换为哪种编码?
    • 是的。问题是 API 正在做一些内部转换。所有 CALL 均基于 xmlChar,即使您用于解析 XML 的 FILES 或 NETWORK 提要以不同的字符集编码。在 UNIX 中,使用 LIBICONV。这是一个非常常见的库,如果我没记错的话,它已经与 LIBXML2 捆绑在一起。要将 xmlChar 转换为其他编码,请再次使用 LIBICONV。 Redards...
    • 还有一个问题。为什么你说我应该先对 UTF-16 进行编码,然后再将其提供给 libxml。我只是尝试在不转换的情况下做到这一点,然后我将 xmlCheckUTF8 函数应用于从 lib xml 释放的每个元素,这没关系。我猜 unsigned char* 只是一些字节......
    • 没有。我说过(至少我无论如何都尝试过 :-))如果您从 UTF-16 编码数据中获取 UTF-16 编码数据,则应该在 将其提供给 API 之前将其编码为 UTF-8别的地方……
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 2014-02-14
    相关资源
    最近更新 更多