Bufory protokołów i UTF-8

Historia schematów kodowania / wielu systemów operacyjnych i Endianów doprowadziła do bałaganu w zakresie kodowania wszystkich form danych ciągów (- tzn. Wszystkich alfabetów); z tego powodu bufory protokołu obsługują tylko ASCII lub UTF-8 w swoich typach łańcuchów i nie widzę żadnych przeciążeń polimorficznych, które akceptują łańcuch C ++. Pytanie brzmi zatem, w jaki sposób należy wprowadzić ciąg UTF-16 do bufora protokołu?

Prawdopodobnie muszę zachować dane jako ciąg znaków w kodzie aplikacji, a następnie wykonać konwersję UTF-8, zanim włożę je do wiadomości (lub z niej wypakuję). Jaki jest najprostszy - przenośny sposób na to Windows / Linux (jedno wywołanie funkcji z dobrze obsługiwanej biblioteki sprawi, że mój dzień)?

Dane będą pochodzić z różnych serwerów internetowych (Linux i Windows) i ostatecznie trafią do SQL Server (i ewentualnie innych punktów końcowych).

- edytuj 1--

Sugestia Marka Wilkinsa wydaje się pasować do rachunku, być może ktoś, kto ma doświadczenie z biblioteką, może opublikować fragment kodu - od wstring do UTF-8 - żebym mógł ocenić, jak łatwo będzie.

- edycja 2 -

sugestia czegoś jeszcze bardziej. Zbadam dalej serializację doładowania.