字符编码原理的理解

1.位,字节,字符

位 (bit):  是指二进制中的一位,是二进制最小的信息单位。

字节 (byte):是计算机信息技术用于计量存储容量的一种计量单位。

字 (word): 是计算机进行数据存储和数据处理的运算单位。对于32位计算机与64位计算机,字的大小往往不同。32位计算机:1字=32位=4字节。64位计算机:1字=64位=8字节

字符 (character) : 是指计算机中使用的字母,数字,汉字和符号等

一个字节等于8位,而8位的字节一共可以组合256(2的8次方)种不同状态

 2.字符集与字符编码

字符集:顾名思义,字符的集合。比如:中文字符的集合

字符编码:就是一套字符集的映射关系,比如ASCII编码

不同的国家使用不同的字符编码:

比如美国使用的ASCII编码(American Standard Code for Information Interchange)

由于一开始计算机只在美国使用,而8位的字节一共可以组合出256(2的8次方)种不同的状态。他们把其中的0到32幢状态规定成了特殊用途,一旦终端,打印机遇上了约定好的这些字节,就要做一些约定的动作。比如遇上00x10,终端就换行,遇上0x07,终端就向人们嘟嘟叫...而这些字节状态被称为控制码。另外,他们又把所有的空格,标点符号,数字,大小写字母分别用连续的字节状态表示,一直编到了第127号,这样计算机就能存储英文了,大家觉得这个方案可行,于是就称之为ASCII编码

 

欧洲人的编码:ISO-8859-1

ISO-8859-1编码是单字节编码,向下兼容ASCII,是ASCII的扩展的一种,该字符集支持部分欧洲使用的语言,Latin1是ISO-8859-1的别名,有些环境下写作Latin-1

中国大陆的汉字编码

GBK跟GB2312,GBK兼容了更多汉字

《信息交换用汉字编码字符集》是由中国国家标准总局1980年发布,1981年5月1日开始实施的一套国家标准,标准号为GB 2312-1980

集合多个国家的编码:Unicode

总数已经超过了65535,所以2个字节的数字是不够用的。Unicode编码系统为表达任意语言的字符而设计。它使用4字节的数字来表达每个字母,符号,或者表意文字

Unicode还在不断扩增,每个新版本插入更多新的字符

Unicode是字符集,utf-32/utf-16/utf-8是三种字符编码方案

3.区位码,国标码,与机内码

区位码:比如在GBK的编码表中,实际上是由94个区组成的,每个区有94个位(编号由01到94)的汉字字符集,于是这些区跟位就组成了区位码

国标码:由区位码稍作转换得到的,是一个汉字国家标准的二进制编码  (区位码[转换成十六进制]+2020H=国标码)

机内码:国标码+8080H=机内码

关于输入拼音得出汉字:其实就是提前用拼音做好了排序

 

4. Unicode编码与UTF

一个字符的Unicode编码是确定的,但是在实际传输过程中,由于不同系统平台的设计不一致,以及处于节省空间的目的,对Unicode编码的实现方式有所不同。

总的来说:ucs或unicode只是定义了从0到11141112这些数字各自对应是什么字符,而计算机上是如何实现的就是utf决定的

utf-8 , utf-16,utf-32等都是Unicode的编码实现方式

utf-16和上面提到的Unicode本身的编码规范是一致的。所有的字符编码长度为16位,也即2个字节。对ASCII字符来说,存储空间浪费严重。不兼容ASCII

UTF的字节序和BOM

由于UTF-16编码每个字符占用了两个字节,在MAC机和PC机上,对字节顺序的理解是不一致的,所以该如何避免同一个文件造成错乱呢。

Unicode规范中推荐的标记字节顺序是BOM(byte Order Mark)

utf-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值