【发布时间】:2010-09-24 12:12:58
【问题描述】:
我正在使用 libxml2。所有函数都使用 xmlChar*。我发现 xmlChar 是一个无符号字符。
所以我对如何使用它有一些疑问。
1) 例如,如果我使用 utf-16 或 utf-32 文件,libxml2 如何处理它并在函数中返回 xmlChar?那我会失去一些角色吗??
2) 如果我想对这个字符串做点什么,我应该将它转换为 char* 还是 wchar_t* 以及如何转换??
我会丢失一些字符吗?
【问题讨论】:
我正在使用 libxml2。所有函数都使用 xmlChar*。我发现 xmlChar 是一个无符号字符。
所以我对如何使用它有一些疑问。
1) 例如,如果我使用 utf-16 或 utf-32 文件,libxml2 如何处理它并在函数中返回 xmlChar?那我会失去一些角色吗??
2) 如果我想对这个字符串做点什么,我应该将它转换为 char* 还是 wchar_t* 以及如何转换??
我会丢失一些字符吗?
【问题讨论】:
xmlChar 用于处理UTF-8 编码仅。
所以,回答你的问题:
不,如果使用 UTF-16 或 UTF-32,您不会丢失任何字符。只需使用 iconv 或任何其他库对您的 UTF-16 或 UTF-32 数据进行编码,然后再将其传递给 API。
不要只是“强制转换”字符串。如果需要,将它们转换为其他编码。
【讨论】:
xmlChar,即使您用于解析 XML 的 FILES 或 NETWORK 提要以不同的字符集编码。在 UNIX 中,使用 LIBICONV。这是一个非常常见的库,如果我没记错的话,它已经与 LIBXML2 捆绑在一起。要将 xmlChar 转换为其他编码,请再次使用 LIBICONV。 Redards...