Code::Blocks中文乱码问题解决方法

前段时间为了做人工智能,回家重新恶补了一下C语言,使用的工具Code Blocks 17.12;

明明写好了代码,执行也没问题

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib,"Winmm.lib")

int main()
{
    printf("创造世界的日子开始了\n");
    printf("Hello world!\n");
    //播放音乐
    PlaySound(TEXT("sounds\\85702.wav"),NULL,SND_FILENAME / SND_ASYNC / SND_LOOP);
    return 0;
}

重新打开中文部分就是乱码;

查了资料,显示默认情况下,是保存为windows本地编码的,也就是WINDOWS-936字符集,也就是GBK编码。

但是很神奇的是,GCC编译器默认编译的时候是按照UTF-8解析的。你存成GBK,但是当成UTF-8解析,这还能编译通过,这才有鬼了,所以这两个地方编码不统一好,编译的时候报错:error: converting to execution character set: Illegal byte sequence,你根本连通过编译的可能性都没有!

其实要解决这个问题很简单,编写Code::Blocks的人只需要在调用编译器之前检测一下源文件是什么编码,然后就自动让编译器用什么编码进行解释,问题就解决了。只是很可惜,Code::Blocks编写的人可能还没有这么做,或许是对本地化认识不够吧,也可能是觉得没必要吧?

解决方案:

查看编辑器-编码设置

修改源文件保存编码在:settings->Editor->gernal settings 看到右边的Encoding group Box了吗?如下图所示:

 

   

  Use encoding when opening files:这个表示打开文件用的格式,第一次保存文件的时候也会用这个格式。

  As default encoding:表示设置为文件缺省保存和打开编码格式

  注意,要先设置好,然后保存文件,才有效。如果你已经保存了文件,无论你怎么修改这个设置,也不会改变你文件的格式了。你的文件还是保持第一次保存的时候的格式。

  所以,如果遇到无法生效,只能先设置好格式,再重新建文件了。

 

参考:https://blog.csdn.net/softman11/article/details/6121538

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值