• 编码


    ascii 码: 1 个字节, 8位表示所有的英文, 特殊符号, 数字等

    Unicode 万国码: 

      1 个字节, 8位表示所有的英文, 特殊符号, 数字等

      2 个字节2*8=16位. 每一位有1 和 0两种可能.  有 2**16=65536 种可能.(放不下9万多个汉字)

      2 个字节, 16位表示一个中文

    utf - 8:

      一个中文 用3个字节

    GBK: 国标码, 1个中文用2个字节

    编码转换:

    在python3中:

      str: 表现形式: s="alex"  实际编码方式:unicode

      bytes:表现形式: s = b"alex"  实际编码方式: utf-8, gbk, gb2312...

    Unicode: 所有字符(中英文)   1个字符 = 4个字节

    gbk: 1个字符, 英文是1个字节, 中文是2个字节

    utf-8: 英文1个字节. 欧洲:2个字节. 亚洲:3个字节

    不同的编码之间是不能相互识别,会产生乱码

    存储 和 传输的是: utf-8,或者 gbk, 或者gb2312 (绝对不是unicode)

    英文的表现形式:
    s = "Q" # unicode ----> utf-8
    b = s.encode("utf-8")
    print(b) #b'Q'
    
    s = "Q" # unicode ----> gbk
    b = s.encode("gbk")
    print(b) #b'Q'
    中文的表现形式
    s = "王小二" # unicode ----> utf-8
    b = s.encode("utf-8")
    print(b) #b'xe7x8ex8bxe5xb0x8fxe4xbax8c' UTF-8中 一个汉字占3个字节 s = "王小二" # unicode ----> gbk b = s.encode("gbk") print(b) #b'xcdxf5xd0xa1xb6xfe' gbk中一个汉字占2个字节

    在python3的内存中,在程序运行阶段使用的是unicode编码,因为unicode是万国码,什么内容都可以进行显示,那么在数据传输和存储的时候由于unicode比较浪费空间和资源,需要把unicode转存成UTF-8或者GBK进行存储,怎么转换呢,在python中可以把文字信息进行编码,编码之后的内容就可以进行传输了,编码之后的数据是bytes类型的数据,其实啊,还是原来的数据只是经过编码之后表现形式发送了改变而已。

    bytes 的表现形式:

    1,英文 b'alex'英文的表现形式和字符串没什么两样

    2,中文b'xe4xb8xad'这是一个汉字的UTF_8的bytes表现形式

    字符串在传输时完成bytes=>encode(字符集)来完成

    s = "alex"
    print(s.encode("utf-8")) # 将字符串编码成UTF-8
    print(s.encode("GBK")) # 将字符串编码成GBK
    结果:
    b'alex'
    b'alex'
    s = ""
    print(s.encode("UTF-8")) # 中⽂编码成UTF-8
    print(s.encode("GBK")) # 中⽂编码成GBK
    结果:
    b'xe4xb8xad'
    b'xd6xd0'
  • 相关阅读:
    3.18构建之法读后感2
    3.17Android学习
    coredns-66bff467f8-krldv CrashLoopBackOff
    6443: connect: network is unreachable
    卸载flannel
    电梯演讲
    每日学习
    梦断代码读后感1
    每日学习
    每日学习
  • 原文地址:https://www.cnblogs.com/kenD/p/9407690.html
Copyright © 2020-2023  润新知