最近在刚刚开始学习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 后查看