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


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

    #include 
    int main()
    {
            printf("\n\
     ☆┌─┐ ─┐☆\n\
     │※│ /※/\n\
     │※│/※/\n\
     │※ /※/─┬─┐\n\
     │※│※|※│※│\n\
    ┌┴─┴─┐-┘─┘\n\
    │※※※※│※※※│\n\
    │※┌──┘※※※│\n\
    └┐※※※※※※┌┘\n\
     └┐※※※※┌┘\n\
     │※※※※│\n");
            return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    问题描述

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

    在这里插入图片描述

    问题分析

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

    临时更改编码类型

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

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

    chcp 65001 
    
    • 1

    如果恢复默认则输入

    chcp 936
    
    • 1

    但这么修改的效果只是临时的,关闭并再次启动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
    
    • 1
    • 2
    • 3
    • 4

    测试效果

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

    在这里插入图片描述

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

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

  • 相关阅读:
    业务规则引擎:Code Effects 5.X Crack-New
    强网杯2022——WEB
    MethodArgumentNotValidException 与 ConstraintViolationException
    Elasticsearch的初步学习
    三极管:潜伏3个月的彩蛋是来自火星的么
    基于分布式高可用集群的网购系统优化
    LCD电子手提秤电路板方案软硬件开发
    iOS_OC API 指定可空性
    用QT实现一个简单的桌面宠物
    2022-7-19-Linux-Uboot命令
  • 原文地址:https://blog.csdn.net/no1xium/article/details/126801090