栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python第九天 编码

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python第九天 编码

编码回顾

前提:所有的数据如果存储在磁盘上或者通过网络发送,这些数据一定需要转化成0101010二进制。

编码本是什么?

人类可以识别的文字与二进制的对应关系。

  • ascii

    存储的是英文字母、数字、特殊字符与二进制之间的对应关系。

    一个字符 用一个字节表示。
    
  • GBK

    国标,中国的GBK为例,英文字母、数字、特殊字符以及大部分汉字与二进制的对应关系。

    一个字符(英数特)  用一个字节。
    一个中文  用两个字节。
    
  • 万国码unicode

    将全世界所有的文字与二进制对应关系。

    一个字符用四个字节表示。
    a		0000 0101 0000 0101 0000 0101 0000 0101
    中	   0000 0101 0000 0101 0000 0101 0000 1101
    
  • utf-8

    一个英数特 用一个字节。
    一个欧洲字符 用两个字节。
    一个中文 用三个字节。
    
  • 单位转换

    8 bit  ==  1 bytes
    1024bytes == 1 Kb
    1024Kb	 ==  1 MB
    1024 MB  ==  1 GB
    1024 GB	 ==  1 TB
    1024 TB	 ==  1 PB
    
编码的进阶

1. 在计算机的内存中,所有的数据统一使用unicode编码的文本序列,当需要将这些数据保存到磁盘上或者通过网络发送出去,必须要转化成非unicode的字节序列。

文本序列:人类能看懂的序列(python中所有的数据类型)都是文本序列。
字节序列:b1 =  b'xe4xb8xadxe5x9bxbd'  (底层就是010101011) bytes类型

2.不同的字节序列不能互选转化。

不同的字节序列之间是不能互相转化,必须中间依赖于unicode的文本序列。

我们以网络传输为例,我们做一个流程:

python的基础数据类型bytes

类名str类型bytes类型标注
名称str,字符串,文本序列bytes,字节序列不同,可以通过文本文字或者字节文字加以区分
组成单位字符字节不同
组成形式‘’ 或者 “” 或者 ‘’’ ‘’’ 或者 “”" “”"b’’ 或者 b"" 或者 b’‘’ ‘’’ 或者 b"“” “”"不同,bytes类型就是在引号前面+b(B)大小写都可以
表现形式英文: ‘alex’ 中文: ‘中国’英文:b’alex’中文:b’xe4xb8xadxe5x9bxbd’字节文字对于ascii中的元素是可以直接显示的,但是非ascii码中的元素是以十六进制的形式表示的,不易看出。
编码方式Unicode可指定编码(除Unicode之外)比如UTF-8,GBK 等不同
相应功能upper lower spllit 等等upper lower spllit 等等几乎相同
转译可在最前面加r进行转译可在最前面加r进行转译相同
重要用途python基础数据类型,用于存储少量的常用的数据负责以二进制字节序列的形式记录所需记录的对象,至于该对象到底表示什么(比如到底是什么字符)则由相应的编码格式解码所决定。Python3中,bytes通常用于网络数据传输、二进制图片和文件的保存等等bytes就是用于数据存储和网络传输数据
更多
  • unicode文本序列转化成非unicode的字节序列

    文本序列----> 字节序列过程叫做编码encode。

    # msg = 'barry'
    msg = '中国'
    # unicode转化成非unicode
    bu = msg.encode('utf-8')  # 编码
    print(bu)  # utf-8的字节序列
    
    bu2 = msg.encode('gbk')
    print(bu2)  # gbk的字节序列
    
  • 非unicode的字节序列转化成unicode的文本序列。

    字节序列 ------> 文本序列的过程叫做解码decode。

    # b1 = b'xe4xb8xadxe5x9bxbd'  # utf-8的字节序列
    # 解码
    # msg1 = b1.decode('utf-8')
    # print(msg1)
    
    b2 = b'xd6xd0xb9xfa'  # gbk的字节序列
    msg2 = b2.decode('gbk')
    print(msg2)
    
  • Utf-8的字节序列如何转化成gbk的字节序列。

    b1 = b'xe4xb8xadxe5x9bxbd'  # utf-8的字节序列
    
    # 先解码
    msg = b1.decode('utf-8')
    
    # 在编码
    b2 = msg.encode('gbk')
    print(b2)  # b'xd6xd0xb9xfa'
    

  • 作业

    • 总结笔记。

    • 将之前讲的所有的知识点复习。

      定义概念 背。
      课上讲的题,作业,一看不会的,再做一遍。
      
    • 今日作业

      1. bytes数据类型是python的基础数据类型,bytes类型存在的意义是什么?

      2. 列举bytes类型与str类型的三个不同点?

      3. 完成下列需求:

        s1 = '太白金星'
        # 将s1转换成utf-8的bytes类型。
        # 将s1转化成gbk的bytes类型。
        b = b'xe5xa4xaaxe7x99xbdxe6x9cx80xe5xb8x85'
        # b为utf-8的bytes类型,请转换成gbk的bytes类型。
        
        
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1038004.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号