现象:

使用编辑器+mingw64时(而Dev c++则不会),编码格式为UTF-8,printf输出的中文乱码。(如果是中文目录,gdb将报错,也是同样原因)

解释:

Windows系统终端默认输出GBK编码,而文本编辑器中使用UTF-8,编码不一致导致异常。(在Dev c++中保存为GB2312,在终端中显示正常。

解决方法:

1.更改Windows终端输出编码格式

控制面板
如图所示,点击“更改系统区域设置”,再勾选Beta版并确定。Windows终端将会以UTF-8输出内容。

可能的弊端:部分程序兼容出现问题,字体乱码,运行异常。(如图吧工具箱)

2.直接修改.c源文件

增添头文件<windows.h>和调用API函数SetConsoleOutputCP(65001),使Windows终端输出正确。

1
2
3
4
5
6
7
8
#include <stdio.h>
#include <windows.h>
int main()
{
SetConsoleOutputCP(65001);
printf ("中文");
return 0;
}

3.在文本编辑器内手动更改编码

此方法不推荐(麻烦),根据不同文本编辑器操作亦有不同。