之前写c程序老是出现编译输出乱码的问题,就去博客,百度查阅了一番找了找了办法。废话不多说直接上操作。
首先打开dev-c++-》工具-》编译选项
在第一行输入
```
-fexec-charset=gbk//生成gbk格式
-fexec-charset=UFT-8//生成UFT-8格式
```
也可以输入UFT-8格式,但是不推荐使用UFT-8编码
我们都知道人有人的语言,计算机有计算机的语言,就是机器语言,所谓的二进制,0和1,1代表有一个信号,0表示没有信号。那怎么把人的语言翻译成机器语言呢,就需要一个字典,字典就是ASCII,如下图,左边是这个行为就是编码,左边是机器可以识别的ASCII码,右面是代表的字符,比如 00100001 代表 "!", 从左到右转换就是解码 (decode),从右到左就是编码 (encode)。
因为ASIIC码有8位数,每位是一个比特 (bit),8位就是一个字节 (byte)。除了第一位是0, 其他7位都可以有0 或者 1 两个选择,所以ASCII 一共可以表示 2^7 ,也就是128个字符。包括a-z 大小写,0-9 数字 和一些标点符号
UTF-8
UTF-8的特点是对不同范围的字符使用不同长度的编码。
上表表示如何从一个从Unicode 转化到UTF-8 , 对于前0x7F的字符,UTF-8编码和ASCII码是一一对应的。如果一个字符在000800-00FFFF 之间,那转化到UTF-8 需要用三字节模板,使用16个码位,每个x 就是一个码位。
比如『汉』这个字的Unicode编码是0x6C49。0x6C49在0x0800-0xFFFF之间,使用3字节模板:1110xxxx 10xxxxxx 10xxxxxx。将0x6C49写成二进制是:0110 1100 0100 1001, 用这个比特流依次代替模板中的x,得到:11100110 10110001 10001001。
当然如果用16位更节约空间。对于中文而言,Unicode 16编码里面已经包含了GB18030里面的所有汉字(27484个字)。
GBK和IUFT-8区别
GBK属于文字编码格式,即不论中英文,使用的双字节表示。
UFT-8是用来解决国际上一种多字节编码,它对英文来说使用一个字节。
小编分享就到这里