Python有两种类型可以表示字符序列:一种是bytes,另一种是str。bytes实例包含的是原始数据,即8位的无符号值(通常按照ASCII编码标准来显示)。str实例包含的是Unicode码点(code point,也叫作代码点)。

注意点:

1,bytes和str并不兼容。在传递字符序列的时候需要注意。

a = b"h\x65llo"
b = "world"

# 可行的
print("%s" % a)
# b'hello', 可行原因:执行print时,会调用bytes的__repr__方法;
# 而type(repr(bytes))是str类型,所以可替换%s

# 不可行
print(b"%s" % b)
# TypeError: %b requires a bytes-like object,
# or an object that implements __bytes__, not 'str'
# 不可行原因:不知道str应该按照什么方案来编码
print(a + b)  # TypeError: can't concat str to bytes

2,操作文件时,需要注意编码格式。

with open('file/student.bin', 'r') as f:
    print(f.read())
# UnicodeDecodeError:
# 'utf-8' codec can't decode byte 0x87 in position 10: invalid start byte
原因:r默认是以文本方式读取,默认编码为utf-8,当文件不为utf-8格式时,就会异常

两种解决方式:

  1,使用rb进行读取;

  2,指定encoding编码格式;