C++ при загрузке ответа, сделанного при помощи get запроса русский текст преобразуется в кракозябру
Делаю бота для VK на плюсах, использую эту функцию для загрузки ответа в json формате. Всё отлично скачивается, но русский текст преобразуется в непонятные символы. system("chcp 1251 > nul");
SetConsoleCP(1251);
SetConsoleOutputCP(1251); - перепробовал всё это, но результата не дало. Текст передаётся в этой части кода if (!WinHttpReadData(Request, (LPVOID)Outbuffer, Size, &downloaded)) { cout << GetLastError() << endl; } buffer += Outbuffer;
string down(HINTERNET Request) {
system("chcp 1251 > nul");
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
DWORD Size{}, downloaded{};
char* Outbuffer;
string buffer{};
do {
Size = 0;
if (!WinHttpQueryDataAvailable(Request, &Size)) {
cout << "Download error" << endl;
nlohmann::json err;
err["failed"] = 2;
string f = err.dump();
return f;
}
Outbuffer = new char[Size + 1];
if (!Outbuffer) {
cout << "lack of memory" << endl;
Size = 0;
}
else {
ZeroMemory(Outbuffer, Size + 1);
if (!WinHttpReadData(Request, (LPVOID)Outbuffer, Size, &downloaded)) {
cout << GetLastError() << endl;
}
buffer += Outbuffer;
delete[] Outbuffer;
}
} while (Size > 0);
return buffer;
}
Ответы (1 шт):
Автор решения: Petuha
→ Ссылка
Просто забить на эти иероглифы и добавлять u8 перед каждой строкой, с которой буду сравнивать скачанный текст. Например, if(buffer == u8"Привет"){...}