1. 使用代码纠正
// 控制台显示乱码纠正
system("chcp 65001"); //设置字符集 (使用SetConsoleCP(65001)设置无效,原因未知)
CONSOLE_FONT_INFOEX info = { 0 }; // 以下设置字体
info.cbSize = sizeof(info);
info.dwFontSize.Y = 16; // leave X as zero
info.FontWeight = FW_NORMAL;
wcscpy(info.FaceName, L"Consolas");
SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), NULL, &info);
2. 不使用代码
手动启动一个控制台程序,启动之后设置编码为utf8
命令:chcp 65001
然后,设置字体为Consolas
代码例子:
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#ifdef _WIN32
#include <Windows.h>
#endif
/**
为保证控制台程序输出中文不乱码:
1、xxx.c xxx.cpp使用utf-8编码,来支持linux和window的中文。
2、window cmd需要进行下面设置
*/
int main(void)
{
#ifdef _WIN32
//http://m.blog.youkuaiyun.com/article/details?id=52789570
//控制台显示乱码纠正
// system("chcp 65001"); //设置字符集(使用SetConsoleCP(65001)设置无效,原因未知)
SetConsoleOutputCP (65001);
CONSOLE_FONT_INFOEX info = { 0 }; // 以下设置字体来支持中文显示。
info.cbSize = sizeof(info);
info.dwFontSize.Y = 16; // leave X as zero
info.FontWeight = FW_NORMAL;
wcscpy(info.FaceName, L"Consolas");
SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), NULL, &info);
#endif
printf("Hello World!\n");
printf("测试中文!\n");
printf("我是中文!\n");
printf("Hello World!\n");
getchar();
return 0;
}