字符集、码位、编码:ASCII、LATIN1、GB2312、GBK、Unicode、UTF-8、UTF-16、UTF-32

1. 基本概念

字符集(可见字符、控制字符…)
字符码位(字符在字符集中的位置)
字符编码规则(编码的二进制存储规则)

2. ASCII码、扩展ASCII码

2.1 ASCII码(128个字符码位)

字符集(ASCII字符集):128个字符。
码位:128个。
编码(ASCII码):码位的二进制。
解决美国字符编码问题。
在这里插入图片描述

2.2 LATIN1(256个字符码位)

遵循ISO-8859-1。
扩展的ASCII码。
在ASCII码的基础上,新增了128个字符,解决欧洲一些国家的字符编码问题。

3. GB2312码、GBK码、GB18030码

3.1 GB2312码(8836个码位)

解决中国汉字编码问题。
字符集:6763个汉字,682个除汉字外的字符。
码位:分区管理,共计94个区,每个区含94个位,共8836个码位。

汉字字符“侃”在GB2312字符集中的码位为5709,存储的二进制编码为0xD9A9。

  • 为什么要加A0:
    GB2312 是双字节编码,为了与 ASCII 码区分开,字节的第8位必须是1,所以GB2312是8位编码。所以至少要从 0x80(128, 1000 0000) 开始吧,但是根据上面的规定,0x80 - 0x9f 要留给控制块,所以只能从 0xA0 开始咯。那为什么 GB2312 编码不是从 0xA0 开始,而是 0xA1 开始呢? 因为 0xA0 正好是图形块的空格,所以就从 0xA1 编码,这就是 0xA0 的由来。

3.2 GBK

相对于GB2312字符集,新增近20000个汉字和符号。

3.3 GB18030

相对于GBK,又新增了几千个少数名族字符。

4. Unicode标准

通用字符集(UCS,Universal Character Set)是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所定义的标准字符集。UCS-2用两个字节编码,UCS-4用4个字节编码。。

4.1 UCS-2字符集( 2 16 2^{16} 216个码位)

UCS-2用两个字节编码。

4.2 UCS-4字符集( 2 32 2^{32} 232个码位)

UCS-4用四个字节编码。

4.2.1 UTF-8编码规则

每次传送8位数据,是一种可变长的编码格式。
在这里插入图片描述字符“王”在UCS-4字符集中的码位为0x0000738B,存储编码为0xE78E8B。

4.2.2 UTF-16编码规则

4.2.3 UTF-32编码规则

5. 其它

Unicode is an international standard that supports most of the writing systems in use today. It is a superset of US-ASCII (ANSI X3.4-1986) and Latin-1 (ISO 8859-1), and all the US-ASCII/Latin-1 characters are available at the same code positions.

6. 参考资料

ASCII, LATIN1, UTF8 简介+++++
非常详细的字符编码讲解,ASCII、GB2312、GBK、Unicode、UTF-8等知识点都有+++++
GB2312 编码的补码为何是 0xA0?+++++
UTF-16与UTF-32+++
QString Class: Detailed Description
qt中的toUtf8, toLatin1, Local8bit, toUcs4
ASCII character map+++++
https://www.lammertbies.nl/comm/info/ascii-characters

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值