ASCII,Unicode,UTF8编码的认识

  最早的计算机是由美国人发明的,最早的编码系统就是ASCII码,通过八位二进制(一个字节)表示128个字符abcAbc+- 等等。。。

  问题来了:那么ASCII码只能表示英文字符和些特殊符号,那其他非英语国家怎么办呢?

  于是中国发明了gbk编码,印度发明了....

  世界编码变得混乱,于是国际组织发布了一套编码,把所有编码归纳进来=>Unicode编码。这套编码表的编号从0一直算到了100多万(三个字节)。每一个区间都对应着一种语言的编码。目前几乎收纳了全世界大部分的字符。所有的字符都有唯一的编号,这就解决了解码的冲突,于是天下大定!

  问题又来了:Unicode把大家都归纳进来,为解决了字符的显示,却没有为编码的二进制传输和二进制解码做出规定。  

  如果使用Unicode码表解码的话,每次都使用三个字节来存储,传输一个字符,这样就会造成资源浪费,本来一个ASCII码就可以所有英文字符了,所以美国人当然不愿意了。

  于是,就出现了如下解决方案:uft-8,utf-16,utf-32这些编码方案。utf-16是用两个字节来编码所有的字符,utf-32则选择用4个字节来编码。下面只讲一下utf-8这种解决方案,因为它用的最多,用得最多是因为在当时它的方案最好,最节省资源。

  UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。

    1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编  码和ASCII码是相同的。

    2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为    10。剩下的没有提及的二进制位,全部为这个符号的unicode码。

  在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值