Python 学习笔记 day1之 字符编码及编码函数

时间:2021-07-14 15:44:08

ord() 函数
  获取字符的整数表示
chr() 函数
  把整数编码转换为对应字符

'\十六进制编码\十六进制编码' 可以将字符的整数编码使用十六进制的方式这样写


Python字符串类型为str,在内存中以unicode表示,一个字符对应若干个字节。如果要保存或传输,就需要把str变为以字节为单位的bytes。 Python对bytes类型的数据用带b前缀的单引号或双引号表示, 如 b'ABC'。
虽然a = 'ABC' 和 a1 = b'ABC' 显示得一样,但是bytes的每个字符只占用一个字节。

encode()
  以Unicode表示的str 通过encode() 函数可以编码为指定字符编码的bytes , 如:
    'ABC'.encode('ascii')
    '篳昂'.encode('utf-8')
    '篳昂'.encode('GBK')

decode()
  反过来,将bytes变为str,就需要用到decode()函数了。
    b'ABC'.decode('ascii')
    b'\xe7\xaf\xb3\xe6\x98\x82'.decode('utf-8')
  如果bytes数据中包含无法解码的字节,会报错。如果只有小部分无效字节,可以传入errors='ignore'忽略错误 , 如:
    b'\xe7\xaf\xb3\xe6\x98'.decode('utf-8',errors='ignore')

len()
  计算str包含多少个字符
    len('ABCDERF')
    len('这是一行中文')
  计算bytes包含多少个字节
    len(b'ABC')
    len(b'\xe7\xaf\xb3\xe6\x98\x82')

例子:
    >>> st = '这是一行中文'
    #len计算str包含多少个字符
    >>> len(st)
    6
    #len计算str转换为bytes后,包含多少个字节。utf-8编码时,一个中文字符占用3个字节
    >>> len(st.encode('utf-8'))
    18