Buffers de protocolo e UTF-8

A história dos esquemas de codificação / vários sistemas operacionais e Endian-nes levou a uma confusão em termos de codificação de todas as formas de dados de cadeias (- isto é, todos os alfabetos); por esse motivo, os buffers de protocolo lidam apenas com ASCII ou UTF-8 em seus tipos de cadeias, e não consigo ver nenhuma sobrecarga polimórfica que aceite a cadeia de caracteres C ++. A questão então é como se espera que uma string UTF-16 seja inserida em um buffer de protocolo?

Presumivelmente, preciso manter os dados como um wstring no código do meu aplicativo e executar uma conversão UTF-8 antes de inseri-los na mensagem (ou extraí-la da). Qual é a maneira mais simples - Windows / Linux portátil de fazer isso (uma única chamada de função de uma biblioteca bem suportada faria o meu dia)?

Os dados serão originários de vários servidores da Web (Linux e Windows) e acabarão no SQL Server (e possivelmente em outros pontos finais).

- editar 1--

A sugestão de Mark Wilkins parece se encaixar no projeto, talvez alguém que tenha experiência com a biblioteca possa postar um trecho de código - do wstring ao UTF-8 - para que eu possa avaliar o quão fácil será.

- editar 2 -

sugestão de sth ainda mais. Vou investigar a serialização de impulso ainda mais.

questionAnswers(4)

yourAnswerToTheQuestion