Как напечатать 4-байтовый символ Unicode в консольном приложении Windows C++?

Как напечатать "????" эмодзи (код Unicode 1F469) в консольном приложении Windows с помощью С++?

В приведенном ниже примере я следовал Печать текста UTF-8 в консоль Windows.

#include <iostream>
#include <io.h>
#include <fcntl.h>

int main()
{
    _setmode(_fileno(stdout), _O_U16TEXT);
    std::wcout << L"face: ????\n";
    return 0;
}

Однако он печатает только два вопросительных знака:

скриншот консоли - два вопросительных знака.

Приложение «Командная строка» (cmd.exe) не может отобразить этот символ, поэтому я использую терминал Windows, который может отображать это:

отображенный эмодзи в Windows Terminal


person czerny    schedule 02.04.2020    source источник
comment
Есть несколько отрицательных голосов, не могли бы вы поделиться, что вы считаете неправильным в этом вопросе, и порекомендовать, как его одобрить?   -  person czerny    schedule 02.04.2020


Ответы (1)


Консоль Windows не может отображать символы за пределами плоскости 0. Терминал Windows был разработан, чтобы улучшить ограничения консоли Windows.

Дополнительная литература: Как использовать символы Юникода в Windows командная строка?

person M.M    schedule 02.04.2020