为什么在Cygwin下,UTF-8输出到C控制台可以工作,而在MinGW下却不行?

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

我希望我的代码能够输出unicode字符。这是我的代码。

printf("\u2660"); //Spade character

当用Cygwin编译和执行时,它工作得很好,并且显示了黑桃字符(♠)。然而,在MinGW中却不能工作,因为UTF-8编码显示为三个字符(ÔÖá)。

在可执行文件中,两种情况下该字符都存储为UTF-8,所以问题不是来自编译。

那么,为什么Cygwin和MinGW的控制台表现不同?有什么办法可以解决用MinGW也显示UTF-8的问题吗?

c utf-8 cygwin mingw
1个回答
1
投票

如何在控制台中运行MinGW应用程序? 有不同的方法。

  • 命令提示符
  • MinTTY (通常MSYS2 shell的启动方式)
  • 诸如Conzole2或ConsoleZ等其他工具。

无论是哪种方式,你都应该进入属性或选项(前两种方式是点击控制台窗口左上方的图标),并将字体改为支持Unicode的字体。

另外,在你的应用程序中使用宽字符输出,比如这样。wprintf(L"\u2660");

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