• bytes 实例包含的是原始数据,即 8 位的无符号值(通常按照 ASCII 编码标准来显示)。
  • str 实例包含的是 Unicode 码点(code point,也叫作代码点),这些码点与人类语言之中的文本字符相对应。
  • str 可以与 str 进行运算,bytes 可以和 bytes 进行运算,但是 str 和 bytes 之间不可直接运算。

要把 Unicode 数据转换成二进制数据,必须调用 str 的 encode 方法。要把二进制数据转换成 Unicode 数据,必须调用 bytes 的 decode 方法。

def to_str(bytes_or_str):
    if isinstance(bytes_or_str, bytes):
	    value = bytes_or_str.decode('utf-8')
	else
		value = bytes_or_str
	return value

我们要提醒自己注意当前操作系统默认的编码标准(可以执行下述命令查看)

python3 -c 'import locale;print(locale.getpreferredencoding())'