How to output utf8 encoded characters normally in c/c++ console application?
Here's what I'm getting now by wprintf
:
1胩?鳧?1敬爄汯?瑳瑡獵猆慴畴??
Is utf8 just not supported by windo开发者_JS百科ws?
No, Windows doesn't support printing UTF-8 to the console.
When Windows says "Unicode", it means UTF-16. You need to use MultiByteToWideChar to convert from UTF-8 to UTF-16. Something like this:
char* text = "My UTF-8 text\n";
int len = MultiByteToWideChar(CP_UTF8, 0, text, -1, 0, 0);
wchar_t *unicode_text = new wchar_t[len];
MultiByteToWideChar(CP_UTF8, 0, text, -1, unicode_text, len);
wprintf(L"%s", unicode_text);
wprintf
supposed to receive a UTF-16 encoded string. Use the following for conversion:
Use MultiByteToWideChar
with CP_UTF8
codepage to do the conversion. (and don't do blind casting from char*
into wchar_t*
).
精彩评论