前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Windows下CLion中文乱码问题解决

Windows下CLion中文乱码问题解决

作者头像
卡尔曼和玻尔兹曼谁曼
发布2022-10-06 08:51:08
6.8K0
发布2022-10-06 08:51:08
举报
文章被收录于专栏:给永远比拿愉快

目录

原因分析

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编码?简单代码如下:

代码语言:javascript
复制
#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编码。至于为什么去掉该选项会输出编码,原因不得而知!😅

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 原因分析
  • 解决方案
  • 测试
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档