根本原因是utf-8源文件与gbk命令行编码不匹配;解决方法是在main函数开头用system("chcp 65001 > nul")切换代码页为utf-8,并确保源文件为utf-8无bom格式。
电脑运行c语言程序时,控制台窗口中中文显示为“涓€涓€”“浣犲ソ”或方块问号,根本原因是源文件保存为utf-8编码,而windows命令行默认使用gbk(代码页936)解析输出,二者不匹配导致字节被错误解码。
在main函数开头插入system命令切换代码页
这是最轻量、无需修改编辑器配置、兼容VS Code/CLion/Dev-C++等所有IDE的通用方法。
第一步:在#include语句之后、int main() { 之后立即添加一行system调用:
system("chcp 65001 > nul");
这行命令将当前CMD会话的活动代码页强制切换为UTF-8(65001),> nul用于屏蔽“活动代码页:65001”的提示行,保持输出干净。不加>nul会导致控制台多出一行干扰信息。
第二步:确保源文件本身以UTF-8无BOM格式保存——VS Code默认即为此格式,记事本另存时需手动取消勾选“UTF-8 with BOM”。【若保存为UTF-8 with BOM,程序可能跳过首字符或报错】
第三步:重新编译并运行程序,中文即可正常显示。
备选system命令写法(效果相同)
方法一:system("mode con cp select=65001");
该命令直接修改控制台代码页,不依赖chcp.exe是否存在,某些精简版系统更稳定。
方法二:system("chcp 65001");
不加>nul,会打印一行“活动代码页:65001”,适合调试阶段确认命令已生效。
为什么不用SetConsoleOutputCP(65001)?
需要额外包含
如果已引入
13万字C语言保姆级教程(深入):立即使用
在学习笔记中,你将探索c语言的核心概念和高级技巧!











