编码规范
# 编码解码Encoding&Decoding
在介绍编码规范
之前,我们先了解几个概念
# 字符和字节
# 字节
字节
:是计算机存储的一种计量单位.我们知道计算机只能识别0和1组成的二进制数,一个数据就是一bit(位),为了统一计算,我们规定8个bit(位)就是一个字节,也就是我们常用的byte.
# 字符
字符
:可以理解我们现实中见到的每个单个英文,中文,数字,特殊符号,emoji表情等我们能用输入法打出的东西就是字符.
需要注意的是英文,中文,数字,特殊符号,emoji在每种编码中占的字节数可能不一致,同一个字符在不同的编码中也不一样, 如在GBK编码中一个汉字占2个字节,在UTF-8编码中一个汉字占3个字节.
随着技术的发展,我们越来越多的需要计算机现实字符,但是计算机只能识别0和1二进制数,于是就出现了编码规范
# 编码规范
为了现实字符,国际组织就制定了编码规范
,希望使用不同的二进制数代表不同的规范,这样支持编码规范的计算机就能根据二进制数显示出字符了.
每套编码规范都有其使用场景,比如,GBK(国标)就是为了解决早期计算机不支持中文,由中华人民共和国全国信息技术标准化技术委员会1995年12月1日制订的一套编码规范。
为了更好的了解编码规范,下面我们介绍下编码规范
中的2个子概念
# 字符集
字符集
:就是很多个字符集合,例如 GB2312是简体中文的字符集,它收录了六千多个常用的简体汉字及一些符号,数字,拼音等字符.
# 字符编码
字符编码
:是字符集的一种实现方式,把字符集
中的的字符映射为特定的字节或者字节序列.
如Unicode是字符集
,UTF-8,UTF-16,UTF-32是字符编码
规则
常见的字符集有 ASCII,GBK,Unicode 常见的字符编码有 UTF-8,UTF-16 EUC-CN等
下面简单介绍写ASCII
# ASCII
ASCII (American Standard Code for Information Interchange)
:美国信息交换标准代码是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言.它是最通用的信息交换标准,并等同于国际标准
ISO/IEC 646,ASCII第一次以规范标准的类型发表是在1967年.最后一次更新则是在1986年,到目前为止共定义了128个字符.
标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)
来表示所有的大写和小写字母,
数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符.
0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符).
在英语中,用128个符号编码便可以表示所有,但是用来表示其他语言,128个符号是不够的,这样一来,这些欧洲国家使用的编码体系,可以表示最多256个符号.
所有引申的ASCII编码方式中,0--127表示的符号是一样的,不一样的只是128--255的这一段.
ASCII中一个字节对应一个字符]
# Unicode
Unicode是为了解决不同国家,不同的文字系统就要使用不同的编码标准过多,处理混乱的问题, 是现在最通用的一种编码规范,也称万国码.
现在大家最常用的是utf8,
注:不同字符编码规则不一样,字节范围也不一样,如果随便指定byte数组进行编码然后解码,则最终结果不一定如预期,产生乱码.- 01
- Mac使用ngrok内网穿透01-04
- 03
- flutter构建为 Web 应用07-27