楼主: Ali.garas.97
1669 0

[其他] 处理Windows11中cmd终端的中文乱码 [推广有奖]

  • 0关注
  • 0粉丝

准贵宾(月)

学前班

40%

还不是VIP/贵宾

-

威望
0
论坛币
1000 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20 点
帖子
1
精华
0
在线时间
0 小时
注册时间
2018-8-14
最后登录
2018-8-14

楼主
Ali.garas.97 发表于 2025-11-21 17:04:58 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

一、问题描述

在使用 Visual Studio Code 的 C/C++ Compile Run 插件调用 Windows 11 系统中的 cmd 终端运行 C++ 程序时,出现了中文输出显示为乱码的情况。

期望的程序输出效果如下:

而实际运行中呈现的效果为:

二、问题根源分析

当通过 CMD 终端执行 C++ 程序时,整个流程涉及三个关键阶段:源代码编写、编译器编译生成可执行文件、操作系统加载并运行该文件,最终结果在终端窗口中展示。在这三个环节中,若字符编码不统一,就容易引发乱码。

具体来看各阶段的编码情况:

  1. 源文件采用 UTF-8 编码保存;
  2. 编译器默认以 UTF-8 编码读取源码并进行编译;
  3. CMD 终端当前使用的字符集为 GBK。

问题的核心在于:程序运行后输出的文本是以 UTF-8 编码形式传递给终端的,但 CMD 终端却使用 GBK 编码去解析这些字节数据。虽然程序本身逻辑无误,但由于编码映射错误,导致中文无法正确显示。

有细心读者可能会提出疑问:那可执行文件内部的字符编码由谁决定?

答案是编译器。编译器在处理源码时,会根据其内部设定的编码规则(如 UTF-8)将字符转换为对应的二进制数据,并写入生成的可执行文件中。因此,只要源码和编译环境一致,这部分通常不会出错。

三、解决方案:修改 CMD 终端字符编码

为了使终端能正确识别并显示 UTF-8 编码的输出内容,需将 CMD 的默认代码页更改为 UTF-8(即代码页 65001)。以下是具体操作步骤:

1. 查看当前 CMD 字符编码

按下 Windows + R 键,输入 cmd 并回车打开命令提示符窗口,输入以下命令:

chcp

若当前编码为 GBK,则会返回数值 936

2. 修改注册表设置

仍然使用 Windows + R 打开运行对话框,输入 regedit 并回车,进入注册表编辑器。

导航至以下路径:

HKEY_CURRENT_USER\Console\%SystemRoot%_System32_cmd.exe

查找名为 CodePage 的项,将其值修改为十进制的 65001(代表 UTF-8 编码)。

如果该路径或变量不存在,可手动创建对应项。

3. 验证修改结果

再次通过 Windows + R 打开新的 cmd 窗口,执行命令:

chcp

此时应显示输出 65001,表示 CMD 已切换至 UTF-8 编码模式。

4. 运行 C++ 程序验证效果

重新编译并运行原 C++ 程序,观察输出结果是否已正常显示中文。

四、结语

思,方晓千机之幽微;

践,乃明万象之本真。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Windows Window wind 中文乱码 NDO

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群
GMT+8, 2025-12-24 01:42