@sanek2005

Почему в WinAPI вместо русского языка выводятся иероглифы?

хочу отобразить сообщение при помощи MessageBox. там есть русский. на самом боксе вместо текста иероглифы. я слышал, что это из-за кодировок, но я не понимаю, что я сделал не так, так что помимо решения хотелось бы пояснить про кодировки (то есть в какой кодировке строки в проекте, какую использует WInAPI, как конвертировать кодировки и т.п.)
вот код:
void SendMsg(const wchar_t* msg, const wchar_t* header_text)
{
	MessageBox(nullptr, msg, header_text, MB_OK);
}

int main()
{
    SendMsg(L"текст", L"заголовок");
}
  • Вопрос задан
  • 271 просмотр
Пригласить эксперта
Ответы на вопрос 1
@User700
MessageBox может подключиться как MessageBoxA, требующую однобайтную кодировку; или как MessageBoxW для юникода. Префикс L объявляет юникодную строку. При компиляции нет предупреждений о приведении типов? Возможно настроено на использование MessageBoxA. можете указать явно MessageBoxW. Хотя нет, при такой ошибке не компилировалось бы.
Может быть дело в том, в какой кодировке компилятор понимает файл исходного кода:
https://qna.habr.com/q/525512
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы