字符集&字符编码

本文详细介绍了字符集、编码的概念,重点探讨了ASCII、GB2312、GBK、GB18030、BIG5等字符集的区别,以及UTF-8、UTF-16、UTF-32的编码规则和应用场景,解释了乱码产生的原因,指出UTF-8兼容ASCII但其他Unicode编码不兼容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符集

字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。而字符集(Character set)则是多个字符的集合。

简单的说,字符集就规定了某个文字对应的二进制数字存放方式(编码)和某串二进制数值代表了哪个文字(解码)的转换关系。

字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、GBK字符集、GB18030字符集、BIG5字符集、Unicode字符集等。

对于一个字符集来说要正确编码转码一个字符需要三个关键元素:字库表、编码字符集、字符编码

字库表

一套字符集不一定包含世界上所有的字符,每套编码规范都有自己的使用场景。

而字库表就存储了编码规范中能显示的所有字符,计算机就是根据二进制数从字库表中找到字符然后给到上层应用显示,相当于一个存储字符的数据库。

例如:几乎所有汉字都保存在GBK 字符集的字库表中。所以可以显示汉字,但法语,俄语并不在其字库表中,所以GBK不能显示法语,俄语等不包含在其中的字符。如图:

1

编码字符集

在一个字库表中,每一个字符都有一个对应的二进制地址,而编码字符集就是这些地址的集合。

例如:
在ASCII码的编码字符集中,字母A的序号(地址)是65,65的二进制就是01000001。我们可以说编码字符集就是用来存储这些二进制数的。而这个二进制数就是编码字符集中的一个元素,同时它也是字库表中字母A的地址。我们根据这个地址就可以显示出字母A。如图:

2

字符编码

字符编码即为:字符集合中的每个字符在计算机系统中存放(编码)和表示(解码)字符对应二进制数的方式。

因为计算机存储单位一般为字节,因此各种字符编码系统以字节为基础进行表示。

计算机要准确的处理各种字符集文字,就需要进行字符编码,以便计算机能够识别和存储各种文字。

3

相应的解码过程如下:

4

乱码原因<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值