编码(Coding)

艾玛,今天看了编码问题终于有点脉络了。

先讲2个概念:编码方式实现方式。

  • 编码方式是我给每个字符用2进制编码,怎么去编码,一个字符占用几个字节。
  • 实现方式是对应着编码方式的。
    我怎么区分每个字符从哪开始从哪结束。
    同一种编码方式区分的方法可以有很多,不一定只有一个实现方式。

编码方式有:

ASCII码
unicode编码
ISO8859-1
GB2312码
GBK/GBK18030
unicode


ASCII码:

用1个字节来存储编码,8位,128个符号。
为什么不是256个呢?因为128个符号就够英文字母的编码了呀,小笨蛋。

  • 实现方式:最高位为0,用剩下的7个字节来表示编码。

ISO8859-1

别名是Latin1,Iso-8859-1 1个字节,256种符号。即编码的范围是0到255.总共能表示256个字符。向下兼容了ACSII,也就是在ASCII编码的基础上扩展了127-255之间位置。例如在网络传输协议中和Mysql数据库默认的编码。

  • 实现方式:一个字节来表示。

GB2312码

中国国家标准总局1980年发布的编码方式。一共可以表示94*94个符号。分两个字节存储,一个字节表示区号,另一个字节表示符号。

  • 编码要求(实现方式):将区位码移动20H,得到国标码。为的是继续沿用ASCII码的前32位控制的符号。再为了不和ASCII码冲突,统一向前移动一位,其实就是将一个字节的第5位变为1.所以可以说移动了80H位。之后变为机内码。(位码在前,区码在后)。

GBK/GBK18030

GBK字符集是GB2312的扩展,兼容了GB2312字符编码,共包含了21886个字符。
GB18030编码向下兼容了GBK和GB2312.GB18030收录了所有的Unicode3.1中的字符,包含中国少数民族的字符.

  • 编码方式变长编码,有单字节.双字节和四字节三种方式.GB18030的单字节编码范围是0x00-0x7F,完全等同于ASCII码;双字节编码的范围和GBK相同,高字节是0x81-0xFE,低字节的编 码范围是0x40-0x7E和0x80-FE;四字节编码中第一、三字节的编码范围是0x81-0xFE,二、四字节是0x30-0x39

unicode

是一种集合了世界上所有符号的一种字符库,它会给每种字符都给一个唯一的二进制编码。
但是这些编码如何存储能保证可辨别呢。

  • Unicode 编码共有三种具体实现,分别为utf-8,utf-16,utf-32,其中utf-8占用一到四个字节,utf-16占用二或四个字节,utf-32占用四个字节。
    UTF-8编码是Unicode字符集一种编码方式,被广泛使用.特点是使用变长的字节数来存储数据, 一般都是1到4个字节,变长的方式指的是将Unicode编码按照规则进行编码,比如一个字节可表示所有的ASCII字符,就不需要用两个字节.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。