字符集与编码-概念区分

在这里主要记录一下字符集与编码这两个概念,因为在日常编程当中很容易把这两个概念弄混掉。对这两个概念做澄清也有利于在编程当中对乱码问题的解决。
首先来说一下什么字符集。其实字符集是一个抽象的概念,例如我们可以把所有的英文字母称为一个字符集,同样的,所有的中文字符也可以称为一个字符集,或者将人类所有语言中的所有字符称为一个字符集。之所以称之为是抽象的,是因为同一个字符可能有很多中不同的表现形式,例如我们在电脑屏幕上看到的“A”,其实是“A”这个字符的一个中具体的表现形式,可以理解为是“A”的图形化表示,当我们说出“A”时,就是用来字符“A”的另外一种表现形式,也就是声音的表现形式。为了能够以统一的方式表示字符集,人们就对字符集进行了编码,unicode就是一种对字符集的编码形式,称之为编码字符集。在unicode中,为每一个不同的字符都分配了一个唯一的整数,用来便是这个字符。而这种编码字符集的数量不会太多,现在普遍使用的就是unicode这种编码字符集。
接着,再来说一下编码。虽然unicdoe为每一个字符都分配了一个唯一的整数,但是这个整数在计算机中的存储方式是可以多种多样的。这里就引申出来多种多样的字符集编码,像UTF-8,GBK,UTF-16等等。他们的作用就是规定如何将unicode中代表某个字符的整数以二进制的形式存储到计算机中。也就是说,字符集编码要解决的问题是,用几个byte来表示一个整数以及这几个byte中,高位存储什么,低位又存储什么等等问题?不同的字符集编码都是从某个角度来思考如何方便、有效地将unicode中的字符编码映射到计算机中去。例如UTF-16就是以便长的方式将unicode中的某一个字符对应的整数映射到成二进制形式,这样可以提高存储的效率,但是并不保证二者的值是相等的。而UTF-32则是原封不动地将unicode中的整数映射成二进制形式。

之所以会有如此多不同的字符集编码方式,其实是随着计算机硬件不断发展的结果,因为计算机中的一次能够读取的字长在不断变化,因此也就出现来多种多样的字符集编码方式。当然,也有一些是考虑了如何提高字符存储效率的,例如utf-16这样的变长编码方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值