python编码

作者: xiaoshengMar | 来源:发表于2018-12-13 18:43 被阅读0次
    • ascii
    • 只有英文
    • 一个字符占8位,是1个字节
    • unicode
    • 英文一个字符占32位,是4个字节
    • 中文一个字符占32位,是4个字节
    • utf-8
    • 英文中一个字符占8位,是1个字节
    • 中文中一个字符占24位,是3个字节
    • gbk
    • 英文中一个字符占8位,是1个字节
    • 中文中一个字符占16位,是2个字节

    注意:

    • 各个编码之间的二进制是不能互相识别的,会产生乱码

    • 文件的储存和传输不能是Unicode,只能是utf-8或者utf-16或者gbk或者gb312等(因为Unicode所占的空间太大了)

    python3中:

    • str在内存中是用Unicode编码的。
    • bytes类型和str类型的区别是编码方式不同,bytes不是用Unicode编码的,是用utf-8或者gbk或者ASCII等。
    • 对于英文:
    • str:
        表现形式:s = 'alex'
        编码方式:Unicode
    • bytes:
        表现形式:s = b'alex'
        编码方式:可能是utf-8或者gbk或者其他,但不会是Unicode
    • 对于中文:
    • str:
        表现形式:s = '小生'
        编码方式:Unicode
    • bytes:
        表现形式:s = b'x\e91\e23'
        编码方式:可能是utf-8或者gbk或者其他,但不会是Unicode

    • 讲str转换成bytes
    s1 = 'xiaosheng'
    new_s1 = s1.encode('utf-8')
    print(new_s1)   # b'xiaosheng'
    
    s2 = '小生'
    new_s2 = s2.encode('utf-8')
    print(new_s2)  # b'\xe5\xb0\x8f\xe7\x94\x9f'
    
    s3 = '小生'
    new_s3 = s3.encode('gbk')
    print(new_s3)   # b'\xd0\xa1\xc9\xfa'
    

    相关文章

      网友评论

        本文标题:python编码

        本文链接:https://www.haomeiwen.com/subject/bdybhqtx.html