编码方案/多个操作系统和字节序的历史导致在编码所有形式的字符串数据(即所有字母)方面一团糟;出于这个原因,协议缓冲区仅处理其字符串类型中的 ASCII 或 UTF-8,而且我看不到任何接受 C++ wstring 的多态重载。那么问题是如何将 UTF-16 字符串放入协议缓冲区?
大概我需要将数据作为 wstring 保存在我的应用程序代码中,然后在将其填充(或从中提取)消息之前执行 UTF-8 转换。什么是最简单的 - Windows/Linux 可移植方式来做到这一点(来自受良好支持的库的单个函数调用会让我很开心)?
数据将来自各种 Web 服务器(Linux 和 Windows),最终将到达 SQL Server(可能还有其他端点)。
-- 编辑 1--
Mark Wilkins 的建议似乎符合要求,也许对库有经验的人可以发布一个代码片段——从 wstring 到 UTF-8——这样我就可以判断它有多容易。
-- 编辑 2 --
……的建议更是如此。我将进一步研究 boost 序列化。