gpt4 book ai didi

c - 如何将 UTF-8 字符串写入 Windows 控制台?

转载 作者:行者123 更新时间:2023-11-30 16:07:43 26 4
gpt4 key购买 nike

在 win32 api 中,我可以通过将标准输出模式设置为 _O_U16TEXT 并使用 wprintf 来显示 unicode。但是如何使用 printf 将 UTF-8 字符串写入控制台?

当我使用 _setmode 将 stdout 设置为 _O_U8TEXT 时,它抛出了一个断言错误:assertion error

我还尝试将控制台输出代码页设置为 UTF-8,字符被替换为问号:enter image description here

代码:

#include <stdio.h>
#include <Windows.h>
#include <io.h>
#include <fcntl.h>

int main(int argc, const char *argv[])
{
//SetConsoleOutputCP(CP_UTF8);
//_setmode(_fileno(stdout), _O_U8TEXT);
printf("你好啊!ABC");
}

最佳答案

When I used _setmode to set stdout to _O_U8TEXT, it threw an assertion error



printf 当前不支持输出到 UNICODE溪流。使用 wprintf反而。

您可以尝试以下代码,看看是否有帮助:
//Sets the output code page used by the console associated with the calling process.
SetConsoleOutputCP(CP_UTF8); //Unicode (UTF-8)
_setmode(_fileno(stdout), _O_U8TEXT); // _O_U16TEXT / _O_WTEXT

wprintf(L"你好啊!ABC");

enter image description here

引用 Code Page Identifiers , SetConsoleOutputCP_setmode .

关于c - 如何将 UTF-8 字符串写入 Windows 控制台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59545262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com