Windows中执行C语言编译的程序乱码的解决方法

最近在刚刚开始学习C语言,同时在Linux及在Windows平台编写输出字符画的代码。

#include <stdio.h>
int main()
{
        printf("\n\
 ☆┌─┐ ─┐☆\n\
 │※│ /※/\n\
 │※│/※/\n\
 │※ /※/─┬─┐\n\
 │※│※|※│※│\n\
┌┴─┴─┐-┘─┘\n\
│※※※※│※※※│\n\
│※┌──┘※※※│\n\
└┐※※※※※※┌┘\n\
 └┐※※※※┌┘\n\
 │※※※※│\n");
        return 0;
}

问题描述

编译过程一切正常,只是在windows中执行的时候一直显示乱码,Linux系统中却没有这个问题。

在这里插入图片描述

问题分析

在CMD属性中看到我们的当前代码页是GBK,而Linux默认是UTF-8,GBK只中文显示友好,其他字符集会出现各种各样的问题,所以我们要调整为UTF-8,因为它兼容全球语言字符。
在这里插入图片描述

临时更改编码类型

之前写过一篇更改cmd中英文帮助的文章: 用CHCP命令切换CMD中英文帮助

这回就咳哟派用场了,我们可以在cmd 中输入如下命令将代码页改为UTF-8

chcp 65001 

如果恢复默认则输入

chcp 936

但这么修改的效果只是临时的,关闭并再次启动CMD窗口又会变为默认编码(GBK),我们要怎么来永久更改成 UTF-8 呢?

永久更改编码类型

我们输入 regedit 命令 ,启动 注册表编辑器

找到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor 项,在下面增一个名为 autorun 类型为 字符串 数据为 chcp 65001

在这里插入图片描述

注册表命令

追求极致的童鞋,可以直接以管理员权限启动CMD 或 powershell,输入以下命令直接操作注册表来快速修改。

# 设置代码页为UTF-8
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor" /v autorun /t REG_SZ /d "chcp 65001" /f
# 恢复代码页为默认(GBK)
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor" /v autorun /f

测试效果

修改完编码类型后我们就可以测试执行 GCC编译过后的 exe 程序。

在这里插入图片描述

问题迎刃而解,好像奇怪的知识点又增加了。

要注意的是修改后显示cmd命令的帮助文档会变成英文,所以要看中文帮助的还是得切换到默认编码。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

传说中的暗暗

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值