_tprintf with Unicode characters in a console app

2019-06-17 06:02发布

问题:

I'm doing this simple output from a Unicode-built console application (using C++ and Visual Studio 2008). This code is intended to run on Windows:

_tprintf(L"Some sample string\n");

Everything works fine. But if I add an non-ASCII character in there:

_tprintf(L"Some sample € string\n");

what gets output to the console is everything until that character:

Some sample

What am I doing wrong here?

回答1:

By default, windows console does not process wide characters. Probably the simplest way to enable that functionality is to call _setmode:

_setmode(_fileno(stdout), _O_WTEXT); 

See MSDN for the required includes, usage examples, and other available modes.