字符编码总结

ASCII:

利用一个字节表示的编码,编码的范围是0-127

这种编码方式主要问题在于无法表示除英文字母以外的其它字符。

而且为了充分利用单字节的表示字符的范围(利用单字节编码一些常用字符可以有效的减少文件的存储空间),许多厂商制定了ASCII的扩展码,比较常见的是IBM制定的已及Latin1

Unicode/UCS:

这两种编码其实是一种编码,主要为了解决世界各国语言文字和专业领域符号表达统一的问题。其编码长度是31位,其中低16位相同的字符称为位于同一平面的字符,其中BMP/Plane0(0x0000~0xFFFF)中包含大多数日常使用的字符。

在计算机中对于Unicode/Ucs产生以下的三种表示

UTF-32/UCS-4:

因为其编码最多有31位,所以很直接的思路就是利用四个字节表示一个字符,这种方法的缺点主要是浪费存储空间,像ASCII这种出现频率极高的字符本身利用一个字节就可以表示,如果采用四个字节表示就相当于平白无故浪费了三个字节。

UTF-16/UCS-2这是一种折中的方法,利用两个字节表示一个字符,这种方法可以完全的的表示BMP字节的字符,但是对于其它的一些平面的字符只能借助于BMP平面的一些控制字符进行扩展进行表示。

UTF-8:

以上编码除了浪费存储空间外还有一个非常严重的缺陷,那就是与C语言不兼容,C语言中类如strcpy之类的函数都是以0x00字节作为字符串结尾的。UTF-8编码是为了解决此问题而提出的,同时它也较好的解决了一般编码表示方法存储空间占用较多的缺陷。因此这种表示方法被广泛应用于计算机当中。

它将每一字节分为三类,1 ASCII 2 控制字符 3 非ASCII的编码

其中ASCII以0xxxxxxx表示(0开头),剩下则以1开头的表示11xxxxxx,10xxxxxxx,其中11xxxxxx为控制字符第一个1后多少个1表示其的多少字节就是编码字节。而10xxxxxx则是为了区别控制字符,以及ASCII编码其它的编码。从这种表示方法我们也可以知道UTF-8的编码是2~6个字节。例如,11110xxx,则其后3个1,表示紧跟着这个字节的3个字节是非ASCII的编码。

转载于:https://www.cnblogs.com/qtalker/p/3641647.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值