编码集---解码和编码

一、字节串和字符串 

        字符是人类能够识别的符号,而这些符号要保存到计算的存储中就需要用计算机能够识别的字节来表示。

二、编码集

1. ASCII编码:

    127个字母 8个数据位足够存储字母、数字、符号


2. GB2312编码  

    每个汉字占据2个字节,16个数据。GB2312是对ASCII的中文扩展,共包含7000多个汉字。


3. GBK(1995)和GB18030(2005/2000)

      >  每个汉字占据 2个字节,由于汉字的数量太大,GB2312不能满足需求。GBK包括了GB2312的所有内容,
  同时增加了近20000个新的汉字(包括繁体)和符号 。 
      >  国家标准GB18030-2000《信息交换用汉字编码字符集基本集的补充》是我国继GB2312-1980和

GB13000-1993之后最重要的汉字编码标准,包含多种我国少数民族文字,其中收入汉字70000余个。


4.Unicode编码 

        > 定长存储, 将所有语言都统一到一套编码集,通常使用2个字节,有的是4个字节。收录很全。


5. utf-8---变长存储

        > 英文字符使用1个字节,沿用原来的ASCII码
        > 使用 1~4个字节表示一个符号,中文存储使用3个字节(ascii码中的内容用1个字节保存\欧洲的字符
用2个字节保存\东亚的字符用3个字节保存)
        > Unicode是内存编码表示方案(规范),而utf-8是如何保存和传输Unicode的方案(实现)
        > 优点:虽然内存汇总的数据都是Unicode,但当数据保存到磁盘或者用于网络传输时,使用utf-8会节省更
多的流量和硬盘空间。


三、编码和解码

  •         编码 将字符转换为对应的二进制序列的过程叫做字符编码;
  •         解码 将二进制序列转换为对应的字符的过程叫做字符解码.

        

        图片参考自云游道士的博客

  • py文件的创建:

      文本编辑器在内容没有保存前,内容以编辑器默认编码形式保存在内存中。pycharm默认UTF-8,查看方法:

import sys
print(sys.getdefaultencoding())
  • py文件的编译:

        如果我们点击运行按钮或者在命令行运行该文件时,py解释器这个软件就会被调用,打开文件,然后解码存在磁盘上的bytes数据成unicode数据,这个过程和编辑器是一样的,不同的是解释器会再将这些unicode数据翻译成C代码再转成二进制的数据流,最后通过控制操作系统调用cpu来执行这些二进制数据,整个过程才算结束。       

#coding:utf8

         因为如果py2解释器去执行一个utf8编码的文件,就会以默认地ASCII去解码utf8,一旦程序中有中文,自然就解码错误了,所以我们在文件开头位置声明 #coding:utf8,其实就是告诉解释器,你不要以默认的编码方式去解码这个文件,而是以utf8来解码。而py3的解释器因为默认utf8编码,所以就方便很多了。

四、字符编码转换



猜你喜欢

转载自blog.csdn.net/u010359398/article/details/81045531