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

发布于:2022-12-21 ⋅ 阅读:(559) ⋅ 点赞:(0)

最近在刚刚开始学习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命令的帮助文档会变成英文,所以要看中文帮助的还是得切换到默认编码。

本文含有隐藏内容,请 开通VIP 后查看