• 编码(encode和decode)


    一. 编码

    1. ASCII编码

      ASCII是最早的计算机编码,包含了英文字母(大小写),数字,标点等特殊符号,一共128个码位,最多只能用8位来表示(一个字节),ASCLL码最多256个位置,无法提供中国的汉字.

    2. GBK编码

      GBK是国标码,占两个字节(16位),虽然位置增多了,但还是无法将汉字全部存储.

    3. unicode

      unicode是万国码,占4个字节(32位),有40多亿个位置,远远大于中国的汉字数.太浪费.

    4. utf-8

      utf-8是目前使用最多的编码,每个字符至少占8位.

      英文:一个字节(8 bit).  欧洲文字:两个字节(16bit).  中文:三个字节(24bit)

    二. encode和decode

    1. encode()

      encode()是编码, 编码之后的数据是bytes类型的数据.格式:b'(英文),b'x(中文)

    a = "hello"
    print(a.encode("GBK"))    #b'hello'
    print(a.encode("ASCII"))  #b'hello'
    print(a.encode("UTF-8"))  #b'hello'
    
    b = "今天下雨了"
    print(b.encode("GBK"))    #b'xbdxf1xccxecxcfxc2xd3xeaxc1xcb'  10个字节
    print(b.encode("ASCII"))  #报错
    print(b.encode("UTF-8"))  #b'xe4xbbx8axe5xa4xa9xe4xb8x8bxe9x9bxa8xe4xbax86'  15个字节

      注:英文编码之后的结果和源字符串一致.  中文编码之后的结果根据编码的不同. 编码结果也不同. 一个中文的UTF-8编码是3个字节. 一个GBK的中⽂文编码是2个字节. ASCII码没有中文.编码之后的类型就是bytes类型. 

    2. decode()

      接收对方的编码,我们得到的也是bytes类型,需要进行解码来获取原来的字符串.decode()是用来解码的.

    bs = b'xbdxf1xccxecxcfxc2xd3xeaxc1xcb'  #不要带引号,直接把bytes给赋值
    print(bs.decode("GBK"))  #今天下雨了
    print(bs.decode("UTF-8"))  #报错,用什么编码就要用什么解码.

      GBK和UTF-8是不可以互相转换的,但是可以通过Unicode来转换.

    bs = b'xbdxf1xccxecxcfxc2xd3xeaxc1xcb'  #不要带引号,直接把bites给赋值
    a = bs.decode("GBK")  #今天下雨了
    print(a.encode("UTF-8"))  #b'xe4xbbx8axe5xa4xa9xe4xb8x8bxe9x9bxa8xe4xbax86'  15个字节
    无限的我,现在才开始绽放,从东边的第一缕阳光到西边的尽头
  • 相关阅读:
    linux网络编程之socket编程(三)
    linux网络编程之socket编程(二)
    字符串转成时间戳
    xls的读写
    统计词语频率保存到xls
    信息时代的学习(对于人类)
    编码格式简介:ASCII码、ANSI、GBK、GB2312、GB18030和Unicode、UTF-8,BOM头
    ThinkPHP中:RBAC权限控制的实习步骤
    getField()和select()方法的区别
    按钮美化,变化显示效果
  • 原文地址:https://www.cnblogs.com/huangqihui/p/9274756.html
Copyright © 2020-2023  润新知