答案是设置源文件编码为GBK或GB2312并匹配控制台代码页。将.cpp文件保存为ANSI编码,同时在程序中使用system("chcp 936")切换代码页,可解决C++控制台中文乱码问题。

在C++控制台程序中输出中文出现乱码,主要是由于字符编码不匹配导致的。Windows系统默认使用GBK或GB2312编码,而源文件可能保存为UTF-8,且控制台(cmd)使用的代码页也不是UTF-8,这就容易造成中文显示乱码。以下是几种有效的解决方案。
1. 设置源文件编码为GB2312或GBK
让源代码文件的编码与Windows控制台默认编码一致:
- 使用记事本或编辑器(如Visual Studio、Code::Blocks)将.cpp文件另存为“ANSI”或“GB2312”编码。
- 这样直接写中文字符串如 cout 就不会乱码。
2. 使用SetConsoleOutputCP()切换控制台输出编码
强制控制台使用UTF-8编码输出:
注意:需同时设置源文件为UTF-8无BOM,并在程序中调用API。- #include windows.h>
- 在main函数开头添加:SetConsoleOutputCP(CP_UTF8);
- 确保源文件保存为“UTF-8 without BOM”格式。
示例代码:
立即学习“C++免费学习笔记(深入)”;
#include#include using namespace std; int main() { SetConsoleOutputCP(CP_UTF8); cout << "你好,世界!" << endl; return 0; }
3. 修改控制台代码页(临时方案)
在运行程序前,手动修改cmd的代码页:
- 打开cmd,输入:chcp 65001(切换到UTF-8)
- 再运行你的程序。
- 或输入 chcp 936 切换回GBK中文环境。
4. 跨平台兼容建议
如果希望代码在不同系统上都能正常输出中文:
- Windows下优先使用SetConsoleOutputCP(65001) + UTF-8源文件。
- Linux/macOS一般默认支持UTF-8,无需额外设置。
- 避免在字符串中硬编码中文,可考虑从外部配置文件读取。
基本上就这些方法。关键是统一“源文件编码”、“程序输出编码”和“控制台显示编码”。只要三者匹配,中文就不会乱码。调试时可先用简单例子测试,确认环境设置正确。











