当前位置: 首页 > news >正文

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

相关文章:

  • 商城项目10_JSR303常用注解、在项目中如何使用、统一处理异常、分组校验功能、自定义校验注解
  • 一天时间迅速准备前端面试|JS基础—原型和原型链【三座大山之一,必考】
  • Spring Security详细讲解(JWT+SpringSecurity登入案例)
  • 【Network】网络基础@应用层 —— 协议 | http | https
  • UGUI学习笔记(九)自制3D轮播图
  • R统计-单因素ANOVA/Kruskal-Wallis置换检验
  • 动态开点线段树(C++实现)
  • pytorch保存和加载模型权重以及CUDA在pytorch中的使用
  • UDF提权(mysql)
  • linux内核漏洞(CVE-2022-0847)
  • kubekey 离线部署 kubesphere v3.3.0
  • Git史上最详细教程(详细图解)
  • Python科学计算库练习题
  • 高性能MySQL实战第10讲:搭建稳固的MySQL运维体系
  • java毕业设计茶叶企业管理系统Mybatis+系统+数据库+调试部署
  • css的样式优先级
  • HTML-表单
  • MySQL主从复制读写分离及奇怪的问题
  • Redux系列x:源码分析
  • Shell编程
  • uva 10370 Above Average
  • Web标准制定过程
  • 从输入URL到页面加载发生了什么
  • 技术发展面试
  • 前端之Sass/Scss实战笔记
  • 实现菜单下拉伸展折叠效果demo
  • 数组的操作
  • 正则学习笔记
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​flutter 代码混淆
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​MySQL主从复制一致性检测
  • ​比特币大跌的 2 个原因
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (转)使用VMware vSphere标准交换机设置网络连接
  • ***检测工具之RKHunter AIDE
  • .md即markdown文件的基本常用编写语法
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .NetCore 如何动态路由
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • .sys文件乱码_python vscode输出乱码
  • @Query中countQuery的介绍
  • @RequestBody详解:用于获取请求体中的Json格式参数
  • [ C++ ] 继承
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(朱雀组)
  • [ IOS ] iOS-控制器View的创建和生命周期
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具