Python2.x中str和byte之间没有明显区别,如果不指定编码格式,默认的编码是ascii,不进行转换会出现“UnicodeDecodeError: 'ascii' codec can't decode byte ”的错误,因此经常要依赖于defaultencoding来做转换,如下:
import sys
reload(sys)
sys.setdefaultencoding('utf8')
Python3.x中已经明确了str和byte的类型区别,需显示的进行类型转换,因此不需要上边代码块的这个转换了,并且sys中也没有了setdefaultencoding。
s1 = 'python3中的字符串'
b1 = s1.encode('utf-8')
print(b1)
s2 = b1.decode('utf-8')
print(s2)
输出结果:
b'python3\xe4\xb8\xad\xe7\x9a\x84\xe5\xad\x97\xe7\xac\xa6\xe4\xb8\xb2'
python3中的字符串