Using UTF-16 for I/O with Visual Studio instead of code pages
14:17 02 Mar 2022

I have this working on Visual Studio 2019 using code pages:

#include 
#include 

int main()
{
    UINT oldcp = GetConsoleOutputCP();  
    SetConsoleOutputCP(932);      //932 = Japanese. 
                                  //1200 for little-, 1201 big-, endian UTF-16     

    DWORD used;
    WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE),L"私の犬\n", 4,&used, 0);

    std::cout << "Hit enter to end."; std::cin.get();
    SetConsoleOutputCP(oldcp); 
    return 0;
}

But I am seeing from Microsoft that I should not be using code pages except to interface with legacy code -- use UTF-16 instead. I can find code pages for UTF-16 (little endian or big endian), but using them doesn't work and it's still using code pages.

So what can I use that accomplishes what my program does, but is up-to-date?

c++ visual-studio unicode utf-16 console-output