编码方案/多操作系统和 Endian-nes 的历史导致了对所有形式的字符串数据(即所有字母表)进行编码方面的混乱;因此,协议缓冲区仅处理其字符串类型中的 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 Serialization 库包含一个UTF-8 codecvt 方面 http://www.boost.org/doc/libs/1_40_0/libs/serialization/doc/codecvt.html您可以使用它来将 unicode 转换为 UTF-8 并返回。文档中甚至有一个例子就是这样做的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)