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

  • 相关阅读:
    Orchard part8
    最有效地优化 Microsoft SQL Server 的性能
    MSSQL优化之索引优化
    Orchard使用中的坎坎坷坷
    GridView----CustomRowCellEdit 使用注意事项
    VS 编辑并继续(转载)
    Visual Studio 2010(.NET 4.0)中使用SQLite.NET
    .net环境下ckeditor与ckfinder中文文件链接乱码的问题
    jQuery常用方法集锦
    checkbox、select、radio的设置与获取
  • 原文地址:https://www.cnblogs.com/qtalker/p/3641647.html
Copyright © 2011-2022 走看看