【字符编码】

 

      计算机发展以来先产生了 ASCII 码,用来代表 生活中出现的 常用字符,比如数字、字母等,不仅有可显示字符,还有33个控制字符,比如换行、结尾等等。ASCII码一共有127个字符,如下图:

   随着计算机的进一步发展,人们看到了更大的可能, 不再局限于使用这些字符。各国人民开始将自己国家的文字添加到体系中,由此产生了多种字符集。 比如 中国普遍使用的gbk、中国台湾人民使用的Big5等等。因为ASCII的字符集 产生的很早,所以各国都是在此基础上扩展自己的字符集,涉及到ASCII 已存在的字符集,大家都是认可的,所以,看不到英文和数字乱码,常见的中文乱码就是因为编解码使用的字符集不同而产生的。

 

此时,ISO组织看到这个情况,越来越难搞,干脆推出了统一的字符集:Unicode

 

 

Unicode  和 其他字符集的 区别是:  

gbk 字符集规定了用两个字节来编码字符,比如 ‘A’和‘中’ 都要用两个字节来编码表示。

Unicode 发明了多种编码方式,比如 :utf-8 、utf-16、utf-2都是其编码方式,可以通过不同的编码方式来表示同一个字符。(其实没什么区别,又不会同时使用多种编码方式)

utf-2 用两个字节来编码字符,可以表示所有的常用字符,utf-16使用四个字节来编码字符,可以表示所有的字符,包括远古文字等

 

最叼的发明应该是 utf-8, utf-8采用可变长度字节来编码字符:

对于ASCII 存在的字符,使用单字节来编码,首位为0,表示读取一个字节就解码。

对于中文和常用字符,使用双字节来编码,首位为 110,表示一次读取两个字节再解码,

对于剩下的字符,使用三字节来编码,首位为1110,表示一次读取三个字节再解码。

对于特殊字符,还可以使用四个字节来编码。

 

必要解释:

编码:将 字符 转换为 字节流     (类似于 加密)

解码:将 字节流 转换为 字符     (类似于 解密)

字符集:字符的集合,例如 ASCII字符集,定义了128个字符,GB2312定义了7445个字符,而计算机系统提到的字符集,值得是已编号的字符的有序集合。

字符码:指的是字符集中每个字符的数字编码。

字符编码:是将字符中的 字符码 转换为 字节码的一种规则或方法。在Unicode中,编号可以通过多种编码方式来转换为 字节流,在其他的字符集中,只有一种编码方式来将字符装换为 字节流,所以也就像是 字符  和 字节流的对应关系,没有了编号这个概念,耦合性很高。



 

字节:8 bit     

字符: 一个文化符号

 

 

ASCII:  127个字符的字符集

gbk:  中文的字符集 ,也是编码方式

unicode  : 包括了所有字符的字符集  

utf-8 /utf-16:  unicode的 编码方式

 

ANSI: 当前系统的默认编码方式

 

 

 

BOM 标记:有些字节流中带有BOM标识,用来告诉软件,这个什么编码的字节流,有助于解码。主要用在当ASCII 和 UTF-8 字节流对英文处理时,字节流一样,软件不能判断编码方式的时候。

 

 

推荐链接: 非常详细和认真,收益匪浅

字符集与编码[上] :https://www.cnblogs.com/xugang/archive/2010/04/07/1706232.html

字符集与编码[下] :https://www.cnblogs.com/xugang/archive/2010/05/08/1730451.html

字符编码(1)——Unicode,utf-8 :https://www.cnblogs.com/jams742003/archive/2010/03/25/1695421.html

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值