c++ - Protocol Buffer 和 UTF-8

标签 c++ unicode utf-8 protocol-buffers portability

编码方案/多个操作系统和 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/

相关文章:

c++ - std::thread 不是使用 Eclipse Kepler MinGW 的命名空间 std 的成员

c++ - 什么名称查找规则适用于静态常量数据成员定义中的名称

c++ - 将 std::function 作为参数传递时出现问题

c# - System.Text.Encoding.UTF8.GetBytes 额外字节

c++ - 添加包含导致编译错误

将 unicode 伪字母转换为常规字符的 JavaScript 函数?

c++ - 在 C++ win32 控制台应用程序中输出 unicode 符号 π 和 ≈

java - 不能用 UTF-8 表示的字符串

java - 如何将 JSF 消息编码设置为 UTF-8?

ruby - 如何在页面正文中搜索并强制进行编码转换