У меня есть dll-проект, написанный в кодировке Windows-1251, и мне нужен вывод моей dll, закодированный в UTF-16.Для преобразования я использую следующую функцию:
ptr = MultiByteToWideChar(CP_ACP, 0, str, -1, wbuff.getBuffer(), len);
К сожалению, MultiByteToWideChar использует системную локаль в качестве исходной кодировки.Так, например, если мой языковой стандарт Windows английский (США), он конвертирует Win1252-> UTF8, а не Win1251-> UTF8, как мне нужно.
Я попытался установить языковой стандарт вручную, но следующий код не работаетлибо:
enc = setlocale(CL_ALL, "rus_rus.1251");
//this returns Windows-1251 encoding
ptr = MultiByteToWideChar(CP_ACP, 0, str, -1, wbuff.getBuffer(), len);
Как я понимаю, MultiByteToWideChar всегда использует системный языковой стандарт, игнорируя мой вызов setlocale.
Есть ли другие способы сделать такое преобразование?Или, может быть, я просто не правильно понимаю эти настройки локали?Спасибо.
PS Прошу прощения за грамматические ошибки.