【问题标题】:Sample code for Unicode XML parsing using PugiXML使用 PugiXML 解析 Unicode XML 的示例代码
【发布时间】:2010-12-28 06:02:29
【问题描述】:

我试图在教程和谷歌搜索中找到该工作的一些代码,但没有运气。

如果有人用过 PugiXml,你能帮帮我吗?

我的主要麻烦是Unicode,否则这个库很容易使用。

提前致谢。

【问题讨论】:

  • 我看到 PugiXML 当前假定所有输入都是 UTF-8。您在解析 UTF-8 文件时遇到问题,还是尝试将 PugiXML 与 wchar_t/wstring 或...一起使用?
  • 其实我正在尝试使用 wchar_t[] 数组来存储数据。
  • 看起来关键是使用 pugi::as_utf8() 将 wchar_t 数据传递给 PugiXML 和 pugi::as_utf16() 以获取 wchar_t 数据。我假设 PugiXML 使用的所有 char* 字符串都是 UTF-8,但从文档中并不清楚。
  • 附注:您确定以“给我...”开头的标题是介绍问题的最佳方式吗?我觉得这很烦人,但可能只是我
  • 可能想尝试提问而不是发出命令。我们不为你工作。

标签: c++ xml parsing unicode


【解决方案1】:

打开 pugiconfig.hpp 并取消注释 PUGIXML_WCHAR_MODE。

现在您可以分别使用 wchar_t 和 std::wstring 代替 char 和 std::string。

快速入门在这里:http://pugixml.googlecode.com/svn/tags/latest/docs/quickstart.html

【讨论】:

  • 这与 Unicode 有什么关系? UTF-8 是一种完全有效的 Unicode 编码。
  • @Nicol Bolas 这取决于平台。在 Windows 上,您无法将 unicode 字符放入 char 类型中。它必须是 wchar_t。 stackoverflow.com/questions/402283/stdwstring-vs-stdstring
  • 首先,Unicode没有字符;它有代码点、代码单元和字素。其次,UTF-8是一种完全有效的Unicode编码;您正在开发的平台与该事实无关。 UTF-8 不会因为您在 Windows 上而停止工作。是的,要打开名称不使用 ASCII 字符的文件,您需要在 Windows 上将其转换为 UTF-16。但这是 API 接口的问题,而不是“Unicode”的性质。 Microsoft 并未规定“Unicode”的含义。
  • @Nicol Bolas 如果没有 PUGIXML_WCHAR_MODE,您将无法在 Windows 上使用 PUGI 解析 unicode。如果你尝试结果将是垃圾。
  • 不,没有它就无法解析为 UTF-16。您通常会得到 UTF-8,它不是垃圾
猜你喜欢
  • 1970-01-01
  • 2011-09-01
  • 1970-01-01
  • 2015-10-09
  • 1970-01-01
  • 2013-07-18
  • 2011-12-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多