Не получается преобразование нуль-терминальной UTF8 в std::wstring
Добавлено: 12 дек 2015, 19:47
Есть указатель на char, в котором лежит нуль-терминальная строка в UTF8. Пока в строке только латиница, или только кириллица, преобразование происходит правильно. Но как только смешаны двубайтные символы с однобайтными, начинаются странности. Например, строка равна "Система>Как Вас зовут?" (префикс опущен, но это UTF-8),
Пока в строке только латиница, или только кириллица, L8 равна 41 (правильно), но L16 вдруг 27, дальше , 26 символов, но TextOut пишет слово L"Система" и потом квадратик вместо символа L'>' и дальше символов нет.
Код: Выделить всё
L16=MultiByteToWideChar(CP_UTF8, 0, Utf8, L8, nullptr, 0);
Код: Выделить всё
MultiByteToWideChar(CP_UTF8, 0, Utf8, L8, Utf16, L16);
return std::wstring(Utf16);