在python2
中,字符串类型是通过str
类型来指定的,但是在存储str
类型的时候,是存储成bytes
类型的,由于两个类型的混用导致经常会出现编码错误。
从python3
开始,区分了str
与bytes
类型。
str
类型就是字符串类型,所有字符串类型都使用unicode
编码。如果要转换str
类型到bytes
类型那么可以使用encode
方法,该方法的encoding
参数可以指定编码类型。
'''
>>> u'A'.encode(encoding="unicode_escape").hex()
'41'
>>> u'中'.encode(encoding="unicode_escape").hex()
'5c7534653264'
>>> u'中'.encode(encoding="utf-8").hex()
'e4b8ad'
'''
## str 类型通过encode方法转换为 bytes 类型
'A'.encode(encoding='utf-8')
bytes
类型类似于c中char类型。所以很适合于处理二进制流,比如写文件系统等。如果需要将bytes
类型转换为str
类型可以使用decode
方法,该方法的encoding
参数可以指定编码类型。
'''
>>> b'\x41'
b'A'
>>> b'\x41'.decode()
'A'
>>> b'\x41'.hex()
'41'
'''
## bytes 类型通过decode方法转换为 str类型
b'A'.decode(encoding='utf-8')