c - PugiXML 值输出编码

标签 c encoding xml-parsing utf pugixml

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

最佳答案

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

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

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

关于c - PugiXML 值输出编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16773314/

相关文章:

python - 在 pyspark 中写入 CSV 文件时选择编码

c - 夹板有趣的错误消息

c - 给定一个指针,找到它所在的堆 block

php - 上传后文件名显示不正确 - PHP

android - Android中的dom解析

android - 我如何通过 XMLPull 解析器获取属性

xml - 如何使用 XmlPeek 任务?

c - GTK 设置默认打印机

c - scanf ("%s")、sscanf ("%s") 和 scanf ("%s ") 之间有什么区别?

python - 使用 pyinstaller 文本无法解码