当前位置: 首页 > news >正文

解决windows系统下 idea、CLion 控制台中文乱码问题

文章目录

      • 1、前言
      • 2、问题分析
          • 分析
      • 3、解决
        • 3.1、方案一 :将文件编码改为 GBK
        • 3.2、方案二:修改 cmd 窗口编码格式为 UTF-8
          • 第一种方式:临时性修改控制台的显示编码
          • 第二种方式:永久修改
          • 第三种方式:通过代码指定控制台编码格式 (c/c++专用)
          • 第四种方式:修改VM Options文件 (Clion专用)

1、前言

以clion为例,执行一段程序后,发现中文乱码了;

2、问题分析

已经将设置中能设成 UTF-8 的都设置了;但还是会乱码;设置如下:

分析

这个问题实际是 CLion 的 bug。本来通过文件→设置→编辑器→常规→控制台中的默认编码设置就可以更改CLion控制台的字符集,实际却不可以,任何设置都没有效果。

因为打印这些字符是需要控制台来打印的, 也就是 cmd 的窗口程序,按照这个提示,我打开了 cmd 窗口,然后输入以下命令来查看编码格式

chcp

结果如下

活动代码页: 936是什么意思,抱着好奇的心态我打开百度,原来如此, 用 GBK 编码的控制台去打印 UTF-8 字符,肯定会乱码了;

在cmd窗口属性也能看出来编码格式

3、解决

3.1、方案一 :将文件编码改为 GBK

在idea或者CLion中的右下角,将:文件编码的格式改为 GBK:

在运行后,发现不乱码了

3.2、方案二:修改 cmd 窗口编码格式为 UTF-8
第一种方式:临时性修改控制台的显示编码

使用 chcp 命令,例如 chcp 65001 ,这会将当前代码页变为 utf-8编码,不过这种方式在关闭 cmd 之后会自动失效。

system("chcp 65001");

常用的编码及对应的码值(十进制):

第二种方式:永久修改

永久性修改就是通过修改注册注册表达到。
打开注册表方法:win+r -> regedit
定位到:HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe
需要注意的是,默认是没有这个键值的。只有在标题栏右键修改过设置才会出现。删除这个项,就会使用console的默认设置。 如果要修改,可以在cmd的标题栏右键设置,随便修改一个属性,然后刷新下注册表就可以了。

右侧如果没有CodePage,则右键新建一个DWORD值,直接将其修改为65001即可(十进制的65001)

第三种方式:通过代码指定控制台编码格式 (c/c++专用)

以CLion为例,先引入 windows.h 头文件,然后 通过SetConsoleOutputCP(65001)方法设置编码格式,
注意:这种方式只支持windows系统,在其他系统上编译会报错

#include "iostream"
#include "windows.h"
using namespace std;int main(){SetConsoleOutputCP(65001); // 设置控制台输出编码为UTF-8 ,解决乱码cout<<"我是中文"<<endl;
}
第四种方式:修改VM Options文件 (Clion专用)

依次点击 Help -> Edit Custom VM Options…

加上以下内容

-Dfile.encoding=UTF-8
-Dconsole.encoding=UTF-8

然后在Clion 双击 Shift键, 输入Registry ,选择 Registry...

找到run.processes.with.pty ,去掉右边的勾即可

http://www.dtcms.com/a/302314.html

相关文章:

  • 应急响应处置案例(上)
  • python-并发编程
  • 移动高清盒子6PRO-河南创维E900V22D-晶晨S905L3B-4+16G-安卓9-线刷固件包
  • 提取excel中的年月日
  • uniapp_微信小程序_根据胶囊按钮计算出的导航栏高度为什么不是44px?
  • 多光谱相机助力第四次全国农业普查-农业用地调查
  • Deepseek + browser-use 轻松实现浏览器自动化
  • 关于大视频大文件诸如超过5个G或10个G的视频上传详解原理以及-5种语言实现-优雅草卓伊凡|深蓝
  • 【7.26-7.28胜算云AI日报:首个开源3D世界生成模型腾讯混元、微软预示 8 月 GPT-5 发布、Nemotron推理、商汤悟能、DM夺金】
  • UniappDay04
  • 开源B端生态掘金:从Odoo二次开发到行业专属模块的技术变现
  • 【uniapp】---- 使用 uniapp 实现视频和图片上传且都可以预览展示
  • NVMe高速传输之摆脱XDMA设计20:PCIe请求模块设计(上)
  • 【mysql慢查询】
  • “太赫兹”
  • Java学习-----如何创建线程
  • 【科普】STM32CubeMX是配置工具,STM32CubeIDE是集成开发环境,二者互补但定位不同,前者负责初始化配置,后者专注代码开发调试。
  • DDD领域驱动中瘦模型与富态模型的核心区别
  • 设计模式(二十四)行为型:访问者模式详解
  • PostgreSQL日志配置全解析:从基础设置到进阶策略
  • 用 Python 获取电脑电池电量的各种案例
  • Python数据处理基础(学习笔记分享)
  • 【Spring WebFlux】 三、响应式流规范与实战
  • 科技赋能成长 脑力启迪未来
  • JVM 内存共享区域详解
  • Uniswap V2 成功上线 PolkaVM:Polkadot Hub 的里程碑时刻
  • 5190 - 提高:DFS序和欧拉序:树上操作(区域修改1)
  • 28天0基础前端工程师完成Flask接口编写
  • Ethereum:Geth运维实战,geth export与geth import命令的实用性深度评估
  • 【C++】手搓一个STL风格的vector容器