zoukankan      html  css  js  c++  java
  • 字符编码总结

    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的编码。

  • 相关阅读:
    如何在获取celery中的任务执行情况
    python flask接口开发和入参的三种方式args、values、json
    python3 redis数据库写入方法和json格式的坑
    python3 封装好的时间戳转换函数,可直接使用
    python3 *args 、 **args 在函数定义和调用中的应用
    python中剔除字典重复项,可以使用集合(set)。
    python3 文件读写操作中的文件指针seek()使用
    jmeter数据库连接配置
    Python自动化培训第一周学习总结
    jmeter分布式压测
  • 原文地址:https://www.cnblogs.com/qtalker/p/3641647.html
Copyright © 2011-2022 走看看