编码之ascii,unicode,utf-8

1.为什么需要Ascii?

   我们都知道在在计算机的世界中只有0和1,那么我们如何和计算机进行交互呢?所以Ascii码就出来了,他用一个字节去表示一个字符,就是一个byte,我们都知道一个byte是8位,就是00000000到11111111位,ASCII是1960年由美国来定制的,一直用到现在,例如A就是65,a就是97,一个规定了128个字符的编码。

2.UNICODE的出现

   每一个国家都有自己的语言,例如中国就有10w字,那么ASCII码显然就不够用,一开始有一些国家还利用ASCII没有用到的数字去做自己的一些字符映射,例如130在法语编码中代表了é,但是这样就会造成一个问题,法国用130来代表自己的文字,但是在德国又是另外一个意思,在中国更加用了新的编码方式GBK,这样其实在没有互联网的时代,其实也没有什么问题,但是随着互联网的出现,国家与国家之间要进行通讯,那么没有一个同一个的编码标准,沟通就没有可能。

  unicode的出现就是解决编码不一致的问题,一个byte不够,那就2个,2个不够,那就3个,所以unicode就用了2个字节来表示字符,而且用的是16进制的格式,意味着范围从0000到FFFF,这是最粗暴但是有效的方法,例如彭字对应的就是5F6D,每一个字符都有独立对应的编码,那么就解决了了一个跨国交流的编码问题,所以unicode也称为万国码。

3.UNICODE的弊端

    UNICODE只是一套标准,它是没有具体实现的,那么问题来了,你按Unicode来输入了3个字节给计算机,计算机怎么才能知道这3个字节代表的是3个字符,还是1个字符,还是2个字符呢,这都是有可能的,所以说有标准,还得有实现。

4.UTF8和UNICODE的关系

   UTF8就是UNICODE的实现方法之一,用的是二进制,是可变长的,UTF32也是UNICODE的实现方法之一,只是两者所实现的方式不一样,UTF8的规则也很简单,规则有以下2条:

   1.如果字符的utf8编码只有单个字节,那么它必定是以0开头,即0xxxxxxx,后面7位就是他的unicode码。

   2.如果utf8的首个字节有n个1,那么接下来的n-1个字节都是用来一起表达该字符的,而且第一个字符的格式是以n个1+0的格式,而后面的字节都是以10为开头,然后把unicode码有高到底,依次填入。

    假设我们现在要把彭字的unicode转换为utf8,5F6D就是0000 01001 0110 1101,那么对应的utf8就是

    11100000 100100101 10101101

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值