2010-09-24 35 views
0

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

所以我有一些关于如何使用它的问题。 1)例如,如果我使用utf-16或utf-32文件处理libxml2如何处理它并返回函数中的xmlChar?我会失去一些字符吗? 2)如果我想对这个字符串做些什么,我应该把它转换为char *还是wchar_t *以及如何?

我会失去一些人物吗?

回答

1

xmlChar用于处理UTF-8编码只有

因此,要回答你的问题:

  1. 不,你不会如使用UTF-16UTF-32丢失任何字符。只需使用iconv或任何其他库在将数据传递给API之前对其数据进行编码即UTF-16UTF-32

  2. 不要只是“投”字符串。在需要时使用其他编码转换它们。

+0

谢谢,但现在我还有一些问题:它现在如何工作?因为即使我提供了一个utf-16文件。 Libxml仍然释放unsigned char *。为什么以及它如何工作?第二个是我如何将UTF32或UTF16转换为UTF-8。我不想使用一些第三方库。我需要在unix下做。我知道windows有函数WideCharToMutliByte做unix有这样的事情吗?最后一个问题是如何将xmlchar转换为其他编码和哪一个? – Nikita 2010-09-24 12:35:46

+0

是的。 API正在做一些内部转换。所有CALL都是基于xmlChar的,即使您用来解析XML的FILES或NETWORK Feed是以不同的字符集编码的。在UNIX中,使用LIBICONV。这是一个相当常见的库,如果我正确记得它已经捆绑了LIBXML2。要将xmlChar转换为其他编码,请再次使用LIBICONV。 Redards ... – 2010-09-24 12:44:00

+0

还有一个问题。为什么你说我应该先将UTF-16编码到libxml之前编码。我只是试图做到不转换,然后我将xmlCheckUTF8函数应用于从lib xml发布的每个元素,并且没问题。我猜这个unsigned char *只是一个字节数...... – Nikita 2010-09-24 13:40:51