字符串二进制编码
字节码、字符串
代码点对应的字符
计算机只认识数字,所有的字符在计算机中,都是以数字的方式存储的
print(ord('A')) # 65 对应16进制:41 用字节码表示:b'A' b'\x41'
print(chr(104)) # h
print(chr(202)) # Ê
print(ord('Ê')) # 202
print(ord('我')) # 25105
print(chr(25105))
编码转换 方法:str.encode(‘编码’) 、 bytes.decode(‘解码’)
作用:字节和字符串之间转换 编码 解码
Python3使用的是Unicode编码
在python2或者3,字符串编码只有两类:
(1)通用的Unicode编码
(2)将Unicode转化为某种类型的编码,如UTF-8,GBK
encode(),编码
作用是,将Unicode对象编码成其他编码的字符串,编码后是字节码(bytes)
decode(),解码
作用是将其他编码的字符串、字节码(bytes)转换成Unicode编码
import chardet
查阅具体的编码类型,chardet.detect(bytes),bytes不能是Unicode编码类型,该方法不接受本来已经是Unicode的编码的参数,会报错,因为作为统一标准,Unicode不能再被解码,如果UTF-8想转至其他非Unicode,则必须先decode到Unicode,再encode到其他非Unicode的编码
s1 = 'ABCD'
print(s1.encode('ASCII'))
# 结果是b'ABCD' 原因是ASCII码里包含ABCD了(代码点跟二进制的编码是一致的) 只要前面有b就说明它是字节
s2 = '小鸟网络'
print(s2.encode('UTF8')) # 汉字用不了ASCII 得用UTF8、gbk、gb2312这些
print(s2.encode