在cmd上打印到stderr无法打印非ASCII UTF-8文本的第一个字符

问题描述 投票:0回答:1

这是我的代码的样子:

#include <windows.h>
#include <stdio.h>

int main()
{
    SetConsoleCP(CP_UTF8);
    SetConsoleOutputCP(CP_UTF8);

    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_FONT_INFOEX cfie;
    ZeroMemory(&cfie, sizeof(cfie));
    cfie.cbSize = sizeof(cfie);
    lstrcpyW(cfie.FaceName, L"Lucida Console");
    SetCurrentConsoleFontEx(hStdOut, 0, &cfie);

    fprintf(stderr, "нијe\n");
}

输出是这个:

��ијe

当打​​印行替换为:printf("нијe\n");

预期的输出:

нијe

我可能应该提到我是用MinGW-GCC编译并在CMD中运行的。

c windows utf-8 printf stderr
1个回答
0
投票

使用STD_ERROR_HANDLE代替STD_OUTPUT_HANDLE

© www.soinside.com 2019 - 2024. All rights reserved.