如何在c / c ++控制台应用程序中正常输出utf8编码字符?

时间:2010-10-05 10:53:17

标签: c++ windows utf-8

以下是我wprintf所获得的内容:

1胩?鳧?1敬爄汯?瑳瑡獵猆慴畴??

windows不支持utf8吗?

2 个答案:

答案 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编码的字符串。使用以下内容进行转换:

使用MultiByteToWideCharCP_UTF8代码页进行转换。 (并且不要从char*盲目投射到wchar_t*)。