HTTP запрос на C++ состоящий из русских символов | библиотека cURL
Отправляю запрос к API Telegram. При вызове метода:
string URL = "http://test.ru/test?text=ТЕКСТ ИЗ РУ.СИМВОЛОВ";
curl_easy_setopt(curl, CURLOPT_URL, URL.c_str());
Если в URL будут русские буквы (как в примере выше), curl их почему-то стирает и запрос не к чему не приводит (Ошибка с кодом 3 - CURLE_URL_MALFORMAT - URL-адрес не был правильно отформатирован.).
Как решить данную проблему?
Если использовать "universal character name", то API выдаёт ошибку:
Bad Request: text must be encoded in UTF-8
Ответы (1 шт):
Автор решения: KonekoKawai
→ Ссылка
string cp1251_to_utf8(const char* str)
{
string res;
int result_u, result_c;
result_u = MultiByteToWideChar(1251, 0, str, -1, 0, 0);
if (!result_u)
{
return 0;
}
wchar_t* ures = new wchar_t[result_u];
if (!MultiByteToWideChar(1251, 0, str, -1, ures, result_u)) {
delete[] ures;
return 0;
}
result_c = WideCharToMultiByte(65001, 0, ures, -1, 0, 0, 0, 0);
if (!result_c) {
delete[] ures;
return 0;
}
char* cres = new char[result_c];
if (!WideCharToMultiByte(65001, 0, ures, -1, cres, result_c, 0, 0)) {
delete[] cres;
return 0;
}
delete[] ures;
res.append(cres);
delete[] cres;
return res;
}