Является ли ваше приложение Unicode. Если да, отступите к ответу Стефана:
MyDisplayableUtf16String = MultiByteToWideChar (CP_UTF8, MyUtf8String, ...)
Полагаю, все не так просто: ваше приложение ANSI.
Прежде всего, вам нужно преобразовать строку в UTF16, как показано выше.
Затем возникает узкое место: содержит ли ваша строка UTF8 символы, кроме текущей кодовой страницы системы (она называется «Язык для приложений, не поддерживающих Юникод»)?
Если нет, преобразуйте строку UTF16 в системную локаль, используя
MyGoodOldAnsiString = WideCharToMultiByte(CP_ACP,MyUtf16String,...)
(или используйте один из макросов ATL / MFC, например W2A(MyUtf16String)
)
и все готово.
В противном случае строка не может быть преобразована в ANSI, что означает, что у вас будет ... хм ... трудная попытка отобразить ее в текстовом поле или окне сообщения ANSI.
Как указал Джо, вы можете отобразить текст в окне сообщения, используя
MessageBoxW (..., MyDisplayableUtf16String, ...)
Трейлинг W обозначает версию API для Unicode (UTF16).
Отображение строки в текстовом поле останется трудным, хотя: вам нужно программно создать текстовое поле как окно Unicode, используя CreateWindowExW()
. Что, я считаю, не будет работать, если родительское окно текстового поля (диалоговое окно, фрейм?) Не является окном Unicode.