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.csdn.net/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;
- }