python中文件编码默认为utf-8,字符编码默认为unicode,

一个例子:

s = '我家小馆'
print(s)
unicode_to_utf8 = s.encode('utf-8')
unicode_to_gbk = s.encode('gbk')
print('utf8:',unicode_to_utf8)
print('gbk:',unicode_to_gbk)

gbk_to_unicode = unicode_to_gbk.decode('gbk')
unicode_to_utf8 = gbk_to_unicode.encode('utf-8')

print(gbk_to_unicode)
print(unicode_to_utf8)

结果为:
我家小馆
utf8: b'\xe6\x88\x91\xe5\xae\xb6\xe5\xb0\x8f\xe9\xa6\x86'
gbk: b'\xce\xd2\xbc\xd2\xd0\xa1\xb9\xdd'
我家小馆
b'\xe6\x88\x91\xe5\xae\xb6\xe5\xb0\x8f\xe9\xa6\x86'
可以看出unicode编码的字符可以直接显示汉字,
而utf-8的汉字为三个字节一个字符,gbk的汉字为两个字符一个汉字。
从unicode-->utf8为编码encode
从utf8-->unicode为解码decode