各种编码的中文占用几个字节?Unicode、ISO 10646、UTF-8、GB-2312、GBK的区别是什么?

为了防止大家在搜索时只想要结果,这里先说明结果

GBK编码中字符占两个字节

截图源于百度百科
在这里插入图片描述

UTF-8编码常用中文字符占3字节、不常用中文字符占4个字节

截图源于百度百科
在这里插入图片描述

Unicode、ISO 10646、UTF-8、GB-2312、GBK的起源

一开始我对Unicode、ISO 10646、UTF-8、GB-2312、GBK这几个常见的编码编码表的区别并不清晰,所以先进行整理这些编码的区别

首先计算机只能认识二进制,那么在我们的字符存入计算机硬盘当中必然存在一个中间的翻译过程
在这里插入图片描述
这种翻译的过程就是编码和解码的过程:比如我们想将数据存入计算机,那么我们需要将我们的字符翻译为计算机看得懂的二进制形式,那这中间一定存在一些对照关系,比如a对应的十进制的编码就是97,然后将十进制的编码转换为二进制的编码就是计算机认识的形式了

ASCII编码

但是这也出现了一个问题,就是这种字符对应编码的关系,如果我说他是97,而别人说它是10,那我这里存入到计算机硬盘中的文件从它那里打开就会乱码,这时候就需要一些规范了,最早的规范是ASCII编码表

截图来源于百度百科
在这里插入图片描述

在这里插入图片描述

基础ASCII码使用了7位二进制数(剩下的一位二进制数为0)所以基数ASCII标识的字符占用一个字节,最多对应128个字符,简单解释为什么:一字节=8位,七位的个数位27=128,所以最多对应128个字符

这时候我们发现,这些字符只能够提供使用英语的国家使用,但是像我们的汉字如果使用ASCII编码表的话一定会乱码,因为ASCII编码中不存在汉字的对应编码

GB2312-80编码、GBK 编码、GB18030编码

我们的中文编码表都有:GB2312-80 标准、GBK 编码标准、GB18030编码标准
GB2312-80 标准
这里我们还需要解释GBK编码标准,GBK是遵循了ISO编码规范的(什么是ISO编码规范后面介绍),
在这里插入图片描述
并且现在进行编码简写的时候填写gb2312和gbk都是可以的
在这里插入图片描述

由于世界上的国家语言很多编码也很多,为了有个公共标准以便于相互之间的编码不产生乱码的情况,这时候就出现了Unicode(又称统一码、万国码、单一码),但是我们需要明确Unicode并不是编码表,而是一种规范,这种规范的好处就是满足该规范的编码可以相互转换,这样就做到了编码全球通用。

同时还有一个标准做的也是同样的事情,那就是ISO/IEC 10646标准,该标准后来和Unicode标准达成统一共识,他们两种标准都相互兼容,都是用于规范全球的多种编码。
截图来自百度百科
在这里插入图片描述

UTF-8编码

然后我们再来解释utf-8编码,该编码就是遵循unicode规范的编码,并且兼容ASCII编码
在这里插入图片描述
utf-8使用的是可变长字节编码,他能过实现多种字符的编码
在这里插入图片描述

总结:Unicode、ISO 10646、UTF-8、GB-2312、GBK的区别

首先unicode是一个规范,用于全球统一编码,就是防止出现不同国家使用不同的编码表而出现的乱码情况

其次IOS和unicode做的是同样的事情,并且unicode和IOS都相互兼容

UTF-8就是一个遵循了Unicode规范的编码,它能够包含中文等多种字符的编码

GBK时一个遵循了ISO规范的编码,向下兼容GB2312编码

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页