python3--字符串编码相关

编码类型很多,常见的例如:
ASCII码:最早被编入计算机中的,长度是128,,主要是为了解决英文字符
GB2312:中国人编码的,为了解决中文
Unicode:统一多种编码方式,降低乱码
UTF-8:Unicode的改进版,节省编码长度

python3默认编码方式是:UTF-8
编码方式相互转换
decode:将已知其他编码形式的字节编译成Unicode形式的字符串,返回值为str类型
只有bytes对象才能调用decode

>>>x = b'1he\xd0\xa1\xb0\xd7'
>>>x1 = x.decode('gbk')
>>>print(type(x1))
>>>print(x1)
<class 'str'>
1he小白

encode:以Unicode的编码的字符串才能调用这个方法,并且返回的是以b’开头的bytes类型
作用就是将Unicode的编码的字符串,编译成需要的编码形式字节

>>>print('1he小白'.encode('gbk'))
>>>print(type('1he小白'.encode('gbk')))
b'1he\xd0\xa1\xb0\xd7'
<class 'bytes'>

补充说明:
bytes 类型由是 ASCII范围内的字符和其它十六进制形式的字符数据,但不能用中文等非ASCII字符表示
那么字符串与字节之间的转换方法:
字符串—>字节
str.encode(‘xx’)或者bytes(str,’xx’),xx填的是str想要转化的编码类型
字节—>字符串
b’hexiaobai’.decode(‘xx’)或者str(b’hexiaobai’,’xx’)
部分无法转义的字节怎么处理?
b’…’.decode(‘xx’,errors = ‘ignore’)
补充几个个方法:
len():字符串调用时返回的是字符个数
字节调用时返回的是字节个数
ord():获取单个字符的整数编码,
chr():把编码转换为对应的字符
查看编码类型

from chardet import detect
a = b'dsad'
print(detect(a))

猜你喜欢

转载自blog.csdn.net/coolpail/article/details/81546458