【发布时间】:2010-09-13 21:31:00
【问题描述】:
我正在使用TinyXML 来解析/构建 XML 文件。现在,根据the documentation,这个库通过 UTF-8 支持多字节字符集。到目前为止,我认为很好。但是,库提供的唯一 API(用于获取/设置元素名称、属性名称和值,......使用字符串的所有内容)是通过 std::string 或 const char*。这让我怀疑自己对多字节字符集支持的理解。仅支持 8 位字符的字符串如何包含 16 位字符(除非它使用代码页,否则会否定“支持 Unicode”声明)?我了解您理论上可以采用 16 位代码点并将其拆分为 std::string 中的 2 个字符,但这不会将 std::string 转换为“Unicode”字符串,这会使它对大多数用途无效并且在写入文件并被另一个程序读入时可能会意外工作。
那么,有人可以向我解释一下库如何提供“8 位接口”(std::string 或const char*)并且仍然支持“Unicode”字符串吗?
(我可能在这里混淆了一些 Unicode 术语;对于由此引起的任何混淆,我深表歉意)。
【问题讨论】: