编码方案/多个操作系统和 Endian-nes 的历史在编码所有形式的字符串数据(即所有字母表)方面导致了困惑;由于这个原因, Protocol Buffer 仅处理其字符串类型中的 ASCII 或 UTF-8,而且我看不到任何接受 C++ wstring 的多态重载。那么问题是如何将 UTF-16 字符串放入 Protocol Buffer ?
大概我需要将数据作为 wstring 保存在我的应用程序代码中,然后在将其填充到(或从中提取)消息之前执行 UTF-8 转换。执行此操作的最简单的 Windows/Linux 可移植方法是什么(来自支持良好的库的单个函数调用会让我开心)?
数据将来自各种网络服务器(Linux 和 Windows),最终将在 SQL Server(以及可能的其他端点)中结束。
-- 编辑1--
Mark Wilkins 的建议似乎符合要求,也许对图书馆有经验的人可以发布一个代码片段——从 wstring 到 UTF-8——这样我就可以衡量它有多容易。
-- 编辑 2 --
某事的建议更是如此。我将进一步研究提升序列化。
最佳答案
Boost 序列化库包含一个 UTF-8 codecvt facet您可以使用它来将 unicode 转换为 UTF-8 并返回。文档中甚至有一个示例就是这样做的。
关于c++ - Protocol Buffer 和 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2139752/