字符编码的发展历程

转载至知乎的字符编码问答

通常我们在编程过程中会碰到如下的字符编码:

  1. ASCII
  2. ISO-8859
  3. GB2312
  4. GBK
  5. GBK18030
  6. Unicode

  • ASCII是最早期的字符集编码,在英语世界国家通用,用一个字节表示,其最高位固定为0,可以表示普通的英文字母,阿拉伯数据,各种像回车、换行等特殊字符,字符集的个数为128个。
  • 随着计算机在世界各国的普及,早期的ASCII编码不能再满足各国人民的需求,特别是西欧其他非英文国家的需要,所以就对ASCII进行了扩展,取消其最高位的固定,形成ISO-8859字符集,这样字符集中字符的个数就扩大至256个,基本满足西欧国家的使用。
  • 到后来,计算机进入中国,因为中国的文字数量太过庞大,有好几千个字符,所以特别迫切的需要一个能满足中国人使用的字符集,但是由于ISO-8859本身只用一个字节表示一个字符,所以聪明的中国人就发明了用两个字节表示一个汉字的GB2312字符集,将常用的汉字纳入这个字符集当中。
  • 再后来,在使用的过程中发现了一些生僻的汉字并没有在GB2312字符集当中,特别是一些领导人的名字也不在,所以这个引起了重视,重新对GB2312进行扩充,将大部分生僻的汉字也纳入其中,还包括一些汉字的笔画,形成了GBK字符集。所以GBK是GB2312的超集。
  • 再后来发现一些少数名族的语言不在其中,所以又对原来的GB字符集进行扩充,形成GBK18030
  • 随着计算机的进一步普及,世界各国纷纷创建自己的字符集,这样就引起了很多混乱,所以人们就对全世界所有的文字符号进行统一的管理,形成Unicode编码。值得注意的是,Unicode字符集只是单纯的决定了字符以何种二进制代码表示,并没有确定以何种方式存储这个二进制代码。

下面就有了对Unicode字符集存储方式的实现:

  • UTF-8
  • UTF-16
  • UTF-16LE
  • UTF-16BE
  • UTF-32
  • UTF-32LE
  • UTF-32BE

其中,UTF-8成为互联网时代主要的编码方式,它是一种可变长度的编码方式,既能够以单个字节表示一个字符,也能多个字节表示一个字符。这样做的理由是,在Unicode的规范中,要用两个字节表示一个字符,但是对于一些西欧国家或者其他使用ASCII和ISO-8859的国家来讲,本来可以用一个字节就可以表示的字符,现在必须使用两个字节进行表示,所以相同的文章,使用Unicode编码所占的资源就要比原来大了一倍,这是不被认可的方式,所以就使用一种可变长度的编码方式进行存储。其中值得注意的是,在windows操作系统中,一个UTF-8编码的文件的开始位置会有一个叫做BOM的字符用来表示这个文件是UTF-8进行编码的,所以一些UTF-8的解码工具中对这个文件进行解码就会发生错误,因为他默认没有考虑这个情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值