PugiXML值输出编码

时间:2013-05-27 12:32:46

标签: c encoding xml-parsing utf pugixml

我有点困惑。 pugi :: xml_node :: value()返回string_t类型的字符串,可以是wchar_t,也可以是char取决于编译标志。在pugiXML的文档中说它适用于utf系列编码的不同类型。好。我正在使用pugi :: xml_document :: load_file()加载uft16编码的文档。然后,当我在每个节点上迭代抛出节点并调用value()方法时,我将获得哪些编码值?据推测,我的数据编码,我已加载到xml_document。这意味着在utf16中。如果它在utf16然后我将无法使用该值,因为将有0个符号,我将不能使用strlen,strcpy等等... 我做过这样的测试,但一切正常。有谁知道它是如何工作的?

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)