Вывод UTF-8 в cmd

239
11 мая 2018, 12:46

В нижеприведённом коде в строку responseString приходит слово состоящее из кириллических символов в кодировке UTF-8. При выводе в cmd с кодовой страницей chcp 866, вместо нужного слова в консоли можно увидеть только ╨Ю╨╗╨╡╨│ . В чём здесь проблема?

Подключен шрифт Lucida Console, а при смене кодовой страницы на 65001 никакие символы не выводятся.

Если эту строку сразу же отправить в Гугл через cURL, то он без проблем поймёт что это за слово.

size_t WriteCallback(void *ptr, size_t size, size_t nmemb, string*userdata)
{
    userdata->append((char *)ptr, size * nmemb);
    return size * nmemb;
}
int main()
{
    string responseString;
    CURL *curl = curl_easy_init();
    curl_easy_setopt(curl, CURLOPT_URL, "https://...");
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &responseString);
    system("chcp 866");
    cout << responseString << endl;
    curl_easy_cleanup(curl);
    return 0;
}

Универсальный декодер без проблем смог определить исходную кодировку и само слово:

Answer 1

Рабочий способ. Нашёл insolor. Первоисточник.

int main()
{
    // Волшебная палочка, которая позволяет выводить UTF-8 в консоль. Пока не разобрался, как это работает
    SetConsoleOutputCP(CP_UTF8);
    setvbuf(stdout, nullptr, _IOFBF, 1000);
    string responseString;
    //Получаю кириллицу в кодировке UTF-8
    CURL *curl = curl_easy_init();
    curl_easy_setopt(curl, CURLOPT_URL, "https://...");
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &responseString);
    cout << responseString << endl;
    curl_easy_cleanup(curl);
    return 0;
}
READ ALSO
C++, Симуляция работы автостоянки

C++, Симуляция работы автостоянки

Добро времени суток!

225
Как на C++ сделать запрос SMART SSD&amp;HDD?

Как на C++ сделать запрос SMART SSD&HDD?

Не могу найти примеры как через C++ сделать запрос по SMART SSD&HDD?

235
Сборка в CMake и Poco lib

Сборка в CMake и Poco lib

Для компиляции обычного проекта, я закидывал нужные dll из Poco в папку проектаКак мне сейчас при сборке проекта уже в CMake, связать папку с dll (как...

186
Какой алгоритм этой программы? Или как реализовать код? Я в замешательстве [требует правки]

Какой алгоритм этой программы? Или как реализовать код? Я в замешательстве [требует правки]

Хочу получить хоть какие-то советы, рекомендации или хоть какую-то реализацию кода этой задачи http://it-practicein

189