1、如果没有设置字符串编码格式,那么将采用系统默认编码格式
name = 'laogaoyang' # 采用系统默认编码格式 nameBytes = name.encode('utf-8') # 先将 name 解码(采用系统默认格式),然后用 'utf-8' 编码 nameStr = nameBytes.decode('utf-8') # 用什么格式编码就需要用同样格式去解码,否则出错
说明:
name.encode('utf-8') 此处将 name 重新编码为 'utf-8',要重新编码首先要解码,此处并没有指明解码方式,那么将采用系统的默认解码格式(编解码格式相同,不会出错)
2、主动设置字符串编码格式为 'utf-8',假设系统编解码格式为 'ascii'
# -*- coding: utf-8 -*- name = 'laogaoyang' # 采用指定的编码格式 'utf-8' nameBytes = name.encode('utf-8') # 这里出错了
说明:
上一个例子编码成 'utf-8' 是正常的,因为编解码格式相同
此处编码采用 'utf-8'格式,并没有指明解码方式,那么将采用系统的默认解码格式(即 'ascii', 编解码格式不相同,出错),修正方法有两种,如下所示
明确指定解码格式 # -*- coding: utf-8 -*- name = 'laogaoyang' # 采用指定的编码格式为 'utf-8' nameBytes = name.decode('utf-8').encode('utf-8')
修改默认解码格式 # -*- coding: utf-8 -*- import sys sys.setdefaultencoding('utf-8') name = 'laogaoyang' # 采用指定的编码格式 'utf-8' nameBytes = name.encode('utf-8')