【问题标题】:PugiXML value output encodingPugiXML 值输出编码
【发布时间】:2013-05-27 12:32:45
【问题描述】:

我有点困惑。 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 等等... 我做了这样的测试,但一切正常。有人知道它是如何工作的吗?

【问题讨论】:

    标签: c encoding xml-parsing utf pugixml


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 这些链接已损坏,能否请您发布一个最新的工作链接
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多