的编码对照表_C语言第三节,简答明了的字符编码,所有编程语言可用到的知识点...

大家好,感谢朋友们的点击和阅读,上节我们简单说了下内存分配和变量常量等问题,通过这些的学习,我们就明白了如何声明一个变量,以及它包含的意义,储存的位置等。今天,我们就简单的说一说C语言基础和应该注意的一些地方,不过在这之前,我再给上期的内容做点补充。

2715387e279f174a53cb0a2115f3364a.png

第三节

上期内容补充:

我们上回说到内存的分配,是通过CPU加载器处理硬件内存,但是没有提到内存地址,我在这里补充点,内存地址分为真实地址和虚拟地址,我们电脑中运行的都是虚拟地址,而真实地址并不直接用于电脑的使用,而是使用需要CPU进行处理后得到的虚拟地址。这个具体原因会在后面的指针中给大家说个明白。

编码:

可能有朋友用过我第一节内容中提到的vs code,在完全安装好后,想要在输出时输出汉语,但是一经编译发现,怎么出来的是乱码。

63cd09a446a8950bf0a65b79ae6dc075.png

汉字编译后出现乱码

所以我们这次聊一聊编码问题:

大家都知道,大多数国家都有自己的语言,电脑也是,电脑的语言现在只有一个,就是那一大串的0和1,而在编写代码的时候,我们使用的人类的语言,为什么它们能够互通呢,我就举例子说明:我们去国外的时候,往往会听不懂外国友人在说些什么,这时候,我们就要随身带着一个翻译软件,或者一个翻译工作者,他们通过汉语和英语的对照表,就可以明白其他人在说什么。所以人类和电脑的交流也是这样,如果使用电脑语言0和1来编程,可能大部分程序员就很头疼,看不懂,也不知道怎么用。但是如果用人类的语言,那么电脑就压根不识别。所以这个时候,人们就发明了计算机语言对照表,也就是我们常说的编码。

具体是怎么用的,我们还是通过例子说明,我们把这些二进制数字当做一个编号,把我们常用的 “a"看做学生,这样就可以一个编号代表一个学生。我们喊到1号学生的时候,是不是就对应到a同学了。而电脑一个道理,当我们在编辑器中是用“a”的时候,编译器在编译阶段就会编译成0110 0001了,这中对应关系就是我们常说的字符集。

严格的来说,编码并不是字符集,字符集是并不是字符编码,字符集就像我说的对照表,只是纯粹的二进制和常用字符的关系。而编码是将字符集中的字符取出来,并编码成电脑语言中对应二进制数的过程。

理解了基础知识,然后我们就说说出现乱码的问题:

由于电脑最开始出现在美国,但是人却无法有效的使用电脑,所以美国人自然就以自己的语言为标准,创造了ASCII编码,而这套编码中没有汉字。但是随着技术的进步,ASCII码就无法满足人类的需求,所以就出现了其他的编码形式,Unicode码,utf-8等,uft-8是Unicode的可变长度的升级,支持所有语言,所以也被称为万国码,而vs code 默认就是uft-8编码。

这里问题就来了,为什么vs code 用utf-8编码,但是在编译后还会出现乱码。这时候,我们就要注意了,编码一般分为两种形态,源文件形态和编译形态,我们在写代码的时候,编辑器使用的是utf-8,所以我们输入汉字的时候发现不会出现乱码。但是在编译时,编译器可用的可不是uft-8了。编译器一般是根据我们系统的编译模式进行编译的,我的电脑是Windows10系统,其编码格式是gbk,这下明白了吗,用gbk去编译utf-8,不出现错误才怪。最后就是请不要纠结为什么英文没有错误,而中文有错误。原因就是编码出现的那一天,就是英文的,其他编码格式都是在这个基础上进行扩展的。

我们既然明白了这其中的原因,就来修改吧,方法有两种:

第一种是暂时的,我们点击右下角有个utf8的按钮,点击后上方搜索框会出现很多编码,向下滑,找到simplified Chinese(gbk)后选中即可。

22718c33361bbea8421fc962bb7740aa.png

效果只在当前页

第二种是改变编辑器的编码:打开左上角文件,选择首选项,然后选择设置,然后选择文本编辑器,选择文件,然后就可以看到Files:Encoding选项,在下拉框中勾选GBK选项即可。这种方式是一劳永逸的方法。

a91572b3907056b47039bb43c3ad8ed5.png

首选项-》设置

设置完成后,重启vs code ,我们再F5运行代码试试。这下就是中文的了。

93aefd7621aaaf0bdc1d02a2d8ba305d.png

编译完成

字符集的使用

我们了解了字符集,那么我们如何使用字符集呢:

字符集中的常用字符我们平时都可以在C语言中直接使用,比如a、你好、123等,我们在编写代码的时候可以直接写出来。但是,既然它有对应的编码值,我们是不是可以使用编码值来表示,答案是肯定的,有个小问题是,我们在使用这些编码值的时候如果直接写为:“68”的话,编译后,它仍然是68,所以我们想要正确的使用编码值,就需要知道这个数字是八进制还是十六进制,然后分别在数字前面加上“”和“x”的转义符号,然后就会正常的输出为字母“h”了。

当然,我们在输出的时候,不只会遇到这些问题,即便我们正常的使用编码,但是还是会遇到:输出值往往会在一行显示,没有换行,不能输出特殊的双引号等现象,这是因为C语言中对这些符号进行了特殊的定义,所以不能直接表示。为了能够使用这些特殊符号,我们往往在这些符号前面加上转义字符“”来使用,比如下面就可以直接输出双引号,换行可以用“”等。

#include int main(int argc, char const *argv[]){ puts(" " "); 这样是不是就可以输出双引号了。}

就我个人而言,这些特殊字符最好死记硬背下来,因为在编程过程中,这些都是经常用到的。

2cf66a61d387808aebda44dec4df8a63.png

所有转义字符及十进制ASCII码值

结语:这期我们说了软件中字符编码,字符集作用及为什么使用的原因,可能有部分说的不完整,或者有点错误,希望朋友们能够指出来,我们共同学习,共同进步。最后感谢朋友们的阅读,谢谢。

原创首发于头条号,作者:小黄鸡软件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值