关于字符集和字符编码的理解

什么是字符集

字符集就是众多字符的集合
是字符和二进制数字之间的映射关系集合
目前有以下几种流行的字符集:

  • ASCII字符集——主要存储英文字母、数字以及一些标点符号
  • GBK字符集——在ASCII字符集的基础上扩展了常用的汉字
  • Unicode字符集——包罗万象,包含了世界上大部分字符

什么是字符编码

字符在计算机中是以二进制进行存储的,好多个字符连在一起形成一串长长的二进制串,要想从这串二进制数字中提取出字符,就需要使用对应的字符编码方式进行解码

ASCII字符编码

ASCII字符集一共有128个字符,二进制从00000000——01111111
所以如果字符以ASCII进行编码,只需要8个bit位即一个字节就足够了
ASCII编码方式就是将字符所对应的二进制串直接存储在计算机中

GBK字符编码

GBK是在ASCII字符集的基础上进行的扩展,为了兼容ASCII字符集,GBK字符集中的二进制从00000000——01111111依旧是和ASCII字符集一致,即一个字节表示一个字符
除此之外的汉字部分是用两个字节进行表示,比如“汉”这个字在GBK字符集中的二进制就是10111010 10111010
因为从00000000——01111111是ASCII的位置,所以汉字高字节的第一位一定是1,这也是GBK中区分英文和汉字的重要方式
GBK编码方式就是将字符所对应的二进制串直接存储在计算机中
如果在一串二进制中某个字节是以0开头,那么这个字节表示ASCII字符集的内容
若某个字节以1开头,那么这个字节连同下个字节共同表示一个汉字,就可以通过这两个字节在GBK字符集中查到对应的汉字展示到屏幕上

Unicode字符编码

Unicode是几乎包含了世界上所有字符的字符集
因为有的字符比如英文字母,只需要一个字节就可以表示,有的字符比如汉字就很多,需要多个字节才能表示,为了节省内存空间,有了以下几种主要的编码方式:

  • utf-8
  • utf-16
  • utf-32
utf-8

在utf-8编码方式中,一个英文占一个字节,即和ASCII字符集相同,二进制从00000000——01111111
一个汉字占三个字节,比如“汉”这个字,在Unicode字符集中对应的二进制是11011000 1001001
utf-8编码会将这16个bit位按顺序放入到1110xxxx 10xxxxxx 10xxxxxx这三个字节的空位中,一共有16个bit的空位
“汉”对应的utf-8编码就是11100110 10110001 10001001,共计三个字节
utf-8编码中每个字节固定的几位就是解码的关键

utf-16

在utf-16编码方式中,一个字符占2-4个字节,高位补0

utf-32

在utf-32编码方式中,一个字符占4个字节,高位补0

学了这么久计算机,第一次将字符编码相关的点整理出来,如果有不正确的地方,还请各位多多指教

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值