【计算机导论常识】常见字符编码

【计算机导论常识】常见字符编码

写课设的时候发现C语言不支持UTF-8,所以去补充了一下字符编码的知识

字符编码:对字符集进行编码

ASCII码

美国信息交换标准码
为了在不同计算机硬件和软件系统中实现数据传输的标准化
ASCII码字符集共有128个字符,用字节存储,最高位通常为0,可用于数据奇偶校验,其余7位编码

扩展ASCII码
电脑在一些欧洲国家发展后发现标准的ASCII码不够用,所以决定把字符集扩展到8位。最多表示256字符

GB2312 字符集

电脑在中国传播后发现扩展ASCII码也不够用,这时候我们首先要设计新的字符集。
分区管理:94个区,每个区94个位,共计8836个码位
01-09区:除了汉字以外682个字符
10-15区:为空白区
16-55区:3755个一级汉字,按拼音排序
56-87区:3008个二级汉字,按部首/笔画排序
88-94区:空白区
分区后我们可以得到一个字符的区位码
区位码=区字节+位字节
“啊”字是GB2312之中的第一个汉字,它的区位码就是16 01
但是这还不是GB2312码。为了区分ASCII码,我们需要把区字节和位字节转为16进制后分别加上0xA0
0xB0=0xA0+16,0xA1=0xA0+1
所以啊的GB2312码是0xB0A1

具体为啥加的是0xA0,可以看一下这篇回答

GB2312的扩展
GBK新增20000个汉字和符号
GB18030新增几千少数民族的汉字和符号

Unicode

试图涵盖全球各国字符,先后推出了UCS-2字符集和UCS-4字符集
UCS-2:0x0000~0xFFFF 可以表示65536个字符
UCS-4: 0x00000000~0xFFFFFFFF 可以表示将近43亿个字符,基本足够了
但是有个缺陷就是占用空间太大了
下面主要介绍UTF-8编码规则
每次传输8位数据,是可变长的字符编码。UTF-8将UCS-4划分为4个区间

范围格式
0x0000 0000~0x0000 007F0xxxxxxx
0x0000 0080~0x0000 07FF110xxxxx 10xxxxxx
0x0000 0800~0x0000 FFFF1110xxxx 10xxxxxx 10xxxxxx
0x0001 0000~0x0010 FFFF11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

以“王”例子,按表格从上到下将它的UCS-4转化为UTF-8

编码形式具体表示
UCS-40x0000 738B
UCS-4二进制0000 0000 0000 0000 0111 0011 1000 1011
第3区间格式1110xxxx 10xxxxxx 10xxxxxx
UTF-8二进制11100111 10001110 10001011
UTF-8十六进制0xE7 0x8E 0x8b

这个编码方法的好处之一是,码点范围 U+0000 ~ U+007F 编码为一个字节,与 ASCII 编码兼容。这范围的 Unicode 码点也是和 ASCII 字符相同的。因此,一个 ASCII 文本也是一个 UTF-8 文本

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值