以下是我wprintf
所获得的内容:
1胩?鳧?1敬爄汯?瑳瑡獵猆慴畴??
windows不支持utf8吗?
答案 0 :(得分:6)
不,Windows不支持将UTF-8打印到控制台。
当Windows说“Unicode”时,它表示UTF-16。您需要使用MultiByteToWideChar将UTF-8转换为UTF-16。像这样:
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);
答案 1 :(得分:1)
wprintf
应该接收UTF-16编码的字符串。使用以下内容进行转换:
使用MultiByteToWideChar
与CP_UTF8
代码页进行转换。 (并且不要从char*
盲目投射到wchar_t*
)。