2

我有点困惑。pugi::xml_node::value() 返回chart_t 类型的字符串,它可以是wchar_t 或char,取决于编译标志。在 pugiXML 的文档中说它适用于 utf 系列编码的不同类型。好的。我正在使用 pugi::xml_document::load_file() 加载 uft16 编码的文档。那么当我迭代 throw 节点并在每个节点上调用 value() 方法时,我将在哪种编码中获得值?大概是在对我的数据进行编码时,我已将其加载到 xml_document。这意味着在 utf16 中。如果它在 utf16 中,那么我将无法使用该值,因为会有 0 符号并且我将无法使用 strlen、strcpy 等等......我已经进行了这样的测试,但一切正常美好的。有人知道它是如何工作的吗?

4

2 回答 2

2

有两种编译模式 - 默认情况下,文档使用 UTF8 在 char 数组中存储内存数据,以及 wchar 模式 (PUGIXML_WCHAR_MODE),其中数据使用 UTF16 或 UTF32 存储在 wchar_t 数组中,具体取决于 sizeof (wchar_t)。

当您加载或保存文档时,pugixml 会自动解码输入数据或以加载/保存函数的 'encoding' 参数指定的编码对输出数据进行编码。

在您的情况下,pugixml 会自动检测输入文件包含 UTF16 数据并将其解码为 UTF8,这是您从 value() 获得的。

于 2013-05-28T15:45:02.250 回答
0

http://pugixml.googlecode.com/svn/tags/latest/docs/manual/loading.html

http://pugixml.googlecode.com/svn/tags/latest/docs/manual/loading.html#manual.loading.encoding

您可以自己指定编码或“享受”自动检测的编码。

于 2013-05-27T12:38:35.370 回答