As the question says, do I have to do in order to print Unicode characters to the output console? And what settings do I have to use? Right now I have this code:
wchar_t* text = L"the 来";
wprintf(L"Text is %s.\n", text);
return EXIT_SUCCESS;
and it prints:
Text is the ?.
I've tried to change the output console's font to MS Mincho, Lucida Console and a bunch of others but they still don't display the japanese character.
So, what do I have to do?
This is code that works for me (VS2017) - project with Unicode enabled
#include <stdio.h>
#include <io.h>
#include <fcntl.h>
int main()
{
_setmode(_fileno(stdout), _O_U16TEXT);
wchar_t * test = L"the 来. Testing unicode -- English -- Ελληνικά -- Español." ;
wprintf(L"%s\n", test);
}
This is console
After copying it to the Notepad++ I see the proper string
the 来. Testing unicode -- English -- Ελληνικά -- Español.
OS - Windows 7 English, Console font - Lucida Console
I tried to fix the above code to work with VS2019 on Windows 10 and best I could come up with is this
#include <stdio.h>
int main()
{
const auto* test = L"the 来. Testing unicode -- English -- Ελληνικά -- Español.";
wprintf(L"%s\n", test);
}
When run it "as is" I see
When it is run with console set to Lucida Console fond and UTF-8 encoding I see
As the answer to 来 character shown as empty rectangle - I suppose is the limitation of the font which does not contain all the Unicode gliphs
When text is copied from the last console to Notepad++ all characters are shown correctly
The characters '来' may not be in your system character code page. You need to save the characters as utf-8.
in vs2013, I try this:
// save as utf-8
#pragma execution_character_set( "utf-8" )
#include <Windows.h>
char *s = "the 来";
int main(){
// set console code page to utf-8
SetConsoleOutputCP(65001);
printf("%s\n",s);
return 0;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With