In a previous blog post, you saw that to print some UTF-8-encoded text to the Windows console, you first have to convert it to UTF-16.
In fact, calling _setmode to change stdout to _O_U8TEXT, and then trying to print UTF-8-encoded text with cout, resulted in a debug assertion failure in the VC++ runtime library. (Please take a look at the aforementioned blog post for more details.)
That blog post lacked some compilable demo code showing the solution, though. So, here you are:
// Test printing UTF-8-encoded text to the Windows console #include "UnicodeConv.hpp" // My Unicode conversion helpers #include <fcntl.h> #include <io.h> #include <stdint.h> #include <iostream> #include <string> int main() { // Change stdout to Unicode UTF-16. // // Note: _O_U8TEXT doesn't seem to work, e.g.: // https://blogs.msmvps.com/gdicanio/2017/08/22/printing-utf-8-text-to-the-windows-console/ // _setmode(_fileno(stdout), _O_U16TEXT); // Japanese name for Japan, encoded in UTF-8 uint8_t utf8[] = { 0xE6, 0x97, 0xA5, // U+65E5 0xE6, 0x9C, 0xAC, // U+672C 0x00 }; std::string japan(reinterpret_cast<const char*>(utf8)); // Print UTF-16-encoded text std::wcout << Utf16FromUtf8("Japan") << L"\n\n"; std::wcout << Utf16FromUtf8(japan) << L'\n'; }
This is the output:

All right.
Note also that I set the Windows console font to MS Gothic to be able to correctly render the Japanese kanjis.
The compilable C++ source code, including the implementation of the Utf16FromUtf8 Unicode conversion helper function, can be found here on GitHub.
“Note also that I set the Windows console font to MS Gothic to be able to correctly render the Japanese kanjis.”
Where? How?
You can right-click the Command Prompt title bar, and select Properties from the pop-up menu. From there, you can change the font. To do it via code, I would try with the SetCurrentConsoleFontEx Windows API.