Windows下CLion中文乱码问题解决
Posted 卡尔曼和玻尔兹曼谁曼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows下CLion中文乱码问题解决相关的知识,希望对你有一定的参考价值。
目录
原因分析
Windows内部采用UTF-16编码,对于中文操作系统使用GBK编码,但是CLion默认文本编码为UTF-8,当编码不一致时,就会造成输出乱码,甚至编译不通过。
解决方案
当然,对于新版的Windows 11我们可以手动在设置中将操作系统的编码调整为UTF-8,这样文件源码以及控制台终端编码都统一为UTF-8肯定就没问题了,但是这样会导致其他一些软件乱码。
所以,我们还是尽量在软件层面统一编码,尽量不要默认修改操作系统的编码。
打开CLion集成开发环境,在设置界面设置各种编码均为UTF-8。
然后,双击Shift,在弹出的搜索栏中,输入“Registry”,点击“Registry…”进入软件注册表界面,去掉“run.processes.with.pty”中默认的对勾,即不要选中该项。这样控制台程序的输出对中文的解析就是政策的了。
测试
接下来,我们试一下控制台输出是否采用的是UTF-8编码?简单代码如下:
#include <fmt/format.h>
#include <string_view>
int main()
constexpr std::string_view msg = "你好";
fmt::print("\\n", msg.length());
fmt::print(msg);
return 0;
可以看到:“你好”两个汉字的长度是6,即一个汉字占三个字节。
UTF-8编码是变长编码,通常汉字占三个字节,扩展B区以后的汉字占四个字节。而GBK编码是定长的编码,一个汉字占两个字节。
所以,取消选中“run.processes.with.pty”以后,控制台输出采用的是UTF-8编码。至于为什么去掉该选项会输出编码,原因不得而知!😅
以上是关于Windows下CLion中文乱码问题解决的主要内容,如果未能解决你的问题,请参考以下文章
开发工具 skills解决 CLion 在 Run 或 Debug 时的中文乱码问题